多态&抽象类&接口
多态定义
同一个对象在不同时刻表现出的不同形态
前提是有extends或implement,有override,父类引用指向子类对象
成员变量:编译、运行都看父类,成员方法:编译看父类(左边),运行看子类(右边)
多态优劣势
优势是提高程序扩展性(动态调用),劣势是不能用子类的特有成员
转型
upcasting:父类引用指向子类对象,是安全的
downcasting:子类引用指向父类对象,不安全
抽象类
没有方法体,abstract的,只能通过子类对象实例化,子类需要override所有方法或者本身也是abstract的
接口
一种公共的规范标准,对行为的抽象,interface
通过实现类(子类implement)对象来实例化
由此得到多态的三种形式:具体类多态,抽象类多态,接口多态
接口的成员变量只能是常量,默认修饰符public static final
接口没有构造方法
接口的成员方法是抽象方法,默认修饰符public abstract
抽象类和接口的区别
项目 | 抽象类 | 接口 |
---|---|---|
成员变量 | 变量、常量 | 常量 |
构造方法 | 有 | 无 |
成员方法 | 抽象和非抽象方法 | 抽象方法 |
设计理念 | 对类抽象,包括属性、行为 | 对行为抽象,主要是行为 |
类与类是单继承,类与接口是(单/多)实现关系,接口与接口是(单/多)继承关系