一 设计规则:
1)将派生类共有的属性和行为,抽到超类中--------------抽共性
2)派生类的行为都一样,设计为普通方法
派生类的行为都不一样,设计为抽象方法
3)
二 抽象方法:
1)由abstract修饰
2)只有方法的定义,没有具体的实现(连{}都没有)
三 抽象类:
1)由abstract修饰
2)包含抽象方法的类必须是抽象类
不包含抽象方法的类也可以声明为抽象类----------我乐意
3)抽象类不能被实例化(单独存在没有意义)
FlyingObject o; //正确,声明了一个FlyingObject类型的引用o
new FlyingObject(); //编译错误,new一个FlyingObject对象(实例化)
FlyingObject[] oo = new FlyingObject[3]; //正确,创建FlyingObject数组对象
new FlyingObject(); //创建FlyingObject对象(实例化)
new FlyingObject[3]; //创建FlyingObject数组对象
4)抽象类是需要被继承的,派生类:
4.1)重写抽象类中的所有抽象方法----------建议
4.2)也声明为抽象类-----------------------------一般不用
abstract class FlyingObject{
abstract void step();
}
class Airplane extends FlyingObject{
void step(){ //重写这个抽象方法---变不完整为完整
}
}
5)抽象类的意义:
5.1)封装共有的属性和行为----------------实现代码复用
5.2)为所有派生类提供统一的类型------向上造型
5.3)可以包含抽象方法,为所有派生类提供统一的入口,
派生类的具体实现不同,但入口是一致的