1.多态
前提:①要有继承关系
②要有方法重写
③要有父类引用指向子类对象
特点:
成员变量: 编译看左边(父类),运行看左边(父类)。
成员方法: 编译看左边(父类),运行看右边(子类)。
静态方法: 编译看左边(父类),运行看左边(父类)。
优点:
- 提高了代码的维护性(继承保证)
- 提高了代码的扩展性(由多态保证)
缺点:不能使用子类的特有属性和行为。
2.抽象
抽象类特点
* a:抽象类和抽象方法必须用abstract关键字修饰
* abstract class 类名 {}
* public abstract void eat();
* b:抽象类不一定有抽象方法有抽象方法的类一定是抽象类或者是接口
* c:抽象类不能实例化那么抽象类如何实例化呢?
* 按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
* d:抽象类的子类
* 要么是抽象类
* 要么重写抽象类中的所有抽象方法
抽象类的成员特点
* a:成员变量:既可以是变量,也可以是常量。
* abstract是否可以修饰成员变量?不能修饰成员变量
* b:构造方法:有, 用于子类访问父类数据的初始化。
* c:成员方法:既可以是抽象的,也可以是非抽象的。
- a:抽象方法 强制要求子类做的事情。
- b:非抽象方法 子类继承的事情,提高代码复用性。