面向对象|面向对象 抽象方法、抽象类

一 设计规则:
1)将派生类共有的属性和行为,抽到超类中--------------抽共性
2)派生类的行为都一样,设计为普通方法
派生类的行为都不一样,设计为抽象方法
3)
二 抽象方法:
1)由abstract修饰
2)只有方法的定义,没有具体的实现(连{}都没有)
三 抽象类:
1)由abstract修饰
2)包含抽象方法的类必须是抽象类
【面向对象|面向对象 抽象方法、抽象类】不包含抽象方法的类也可以声明为抽象类----------我乐意
3)抽象类不能被实例化(单独存在没有意义)

FlyingObject o; //正确,声明了一个FlyingObject类型的引用onew 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)可以包含抽象方法,为所有派生类提供统一的入口,
派生类的具体实现不同,但入口是一致的

    推荐阅读