多态
前提 1 必须存在继承关系(或者实现接口)
2 必须出现方法的覆盖,(重写)
3 必须是 父类的引用指向子类的对象
特点
成员变量(静态非静态的)都是看左边
成员方法 非静态的是编译时看左边,运行时看右边(动态绑定)
静态的事编译时和运行时都看左边
类型转换
弊端:无法获取子类特有属性
解决:向下转型(必须先有向上转型)
开发时候很少父类的引用指向子类对象,但是当参数的时候使用较多
这样扩展性强
多态的好处和弊端:
a:提高了代码的维护性(继承保证)
b:提高了代码的扩展性(由多态保证)
可以当做形式参数,接受任意的子类对象。
抽象类
抽象类不一定有抽象方法
有抽象方法一定是抽象类 ,或者接口
abstract:
1 不能修饰成员变量
2 成员方法可以是抽象的也可以非抽象(abstract)
抽象方法必须强制要求重写!
3 抽象类中有构造方法的
接口的
接口的实现类,可以是抽象(意义不大)的也可以是非抽象的。
成员变量:只能是常量,默认修饰符是 public static final 建议手动给出。
构造方法:接口中没有构造方法,
接口与接口之间,可以单继承 也可以多继承
接口与抽象类的区别
接口类的成员变身必须是常量, 抽象类可以是变量
接口的成员方法必须全部是抽象的而且被public 修饰,而抽象类的方法可以是抽象的 也可以是非抽象的
接口没有构造方法 抽象类时又构造方法的
接口是被实现,抽象类时被继承。
设计理念
抽象类is a 是继承体系的共性的内容
接口 like a 是该继承体系的扩展功能 |
|