首页 > 代码库 > 面向对象(抽象类)
面向对象(抽象类)
/**
* Created by rabbit on 2014-07-21. 博客园.liupengcheng
* 当多个类中 出现相同功能。但是功能主体不同。这时可以进行向上
* 抽取,这时,只抽取功能定义,而不抽取功能主体。
*
* 抽象 看不懂
*
* 抽象类的特点
* 1、抽象方法一定定义在抽象类中
* 2、抽象方法和抽象类都必须被abstract 修饰
* 3、抽象类不可以被new 创建对象,因为调用抽象方法没意义
* 4、抽象类中的方法要被使用,必须由子类复写其所有的抽象
* 方法后,建议子类对象调用。如果子类只覆盖了部分抽象方法
* 该子类还是一个抽象类。
*
* 抽象类和一般类没有太大的不同
* 该如何描述事物,就如何描述事物。只不过该事物中出现了一些
* 看不懂的东西,这些不确定的部分,也是该事物的功能,需要明确
* 出现,但是无法定义主题
*
* 抽象类中比一般类多了个抽象函数,就是在类中可以定义抽象方法
* 抽象类不可以被实例化
*
* 特殊:抽象类中可以不定义抽象方法,这样做,仅仅是不让该类建立
* 对象。
*/* Created by rabbit on 2014-07-21. 博客园.liupengcheng
abstract class student
{
public abstract void study();
public abstract void sleep();}
class Basestudent extends student
{
public void study()
{
System.out.println("Base study");
}
public void sleep()
{
System.out.println("坐着睡");
}
public void eat()
{
System.out.println("坐着吃饭");
}
}class Advstudent extends student
{
public void study()
{
System.out.println("Adv study");
}
public void sleep()
{
System.out.println("躺着睡");
}
}class Dostudent
{
public void doSome(student stu)
{
stu.study();
stu.sleep();
}
}* Created by rabbit on 2014-07-21. 博客园.liupengcheng
public class DuoTaiDemo
{
public static void main(String [] args)
{
Dostudent ds = new Dostudent();
ds.doSome(new Basestudent());
ds.doSome(new Advstudent());
}}