1、多态
1、1多态概述
同一个对象,在不同时刻表现出来的不同形态
多态的前提和体现
- 有继承/实现关系
- 有方法重写
- 有父类引用指向子类对象
1、2多态中成员访问特点
- 成员变量:编译看左边,执行看左边
- 成员方法:编译看左边,执行看右边
为什么成员方法和成员变量的访问方法不一样呢?
* 因为成员方法有重写,而成员变量没有
1、3多态的好处和弊端
- 多态的好处:提高了程序的扩展性
具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作 - 多态的弊端:不能使用子类的特有功能
1、4多态中的转型
- 向上转型
从子到父(父类引用指向子类对象) - 向下转型
从父到子(父类引用转为子类对象)
2抽象类
2.1、抽象类概述
在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。
2.2、抽象类的特点
-
抽象类和抽象方法必须使用abstract关键字修饰
public abstract class 类名{} public abstract void eat();
-
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
-
抽象类不能实例化
抽象类如何实例化呢?
参照多态的方式,通过子类对象实例化,这叫抽象类多态。 -
抽象类的子类
要么重写抽象类中的所有抽象方法;要么是抽象类。
2.3、抽象类的成员特点
- 成员变量:可以是变量也可以是常量
- 构造方法:有构造方法,但是不能实例化
那么,构造方法的作用是什么呢?用于子类访问父类的初始化 - 成员方法:可以有抽象方法,限定子类必须完成某些动作;也可以有非抽象方法,提高代码复用性。