面向对象有三大特征:封装、继承和多态。今天我们来谈谈多态。
多态
多态概述
什么是多态?
每每谈及多态时,总有一种只可意会不可言传的感觉。简单来说多态就是某个事物,在不同时刻表现出来的不同状态。
比如:猫可以是猫的类型,也可以是动物的类型(因为猫也是动物)。
多态的前提
- 类和类要有继承关系。
- 要有方法重写。没有也行,但没有的话多态就没有意义了。
- 要有父类引用指向子类对象。(父类 对象名 = new 子类();)
多态中的成员的访问特点
- 成员变量的访问特点:编译看左边,运行看左边
- 成员方法的访问特点:编译看左边,运行看右边
- 构造方法:创建子类对象时,会先访问父类的构造方法,对父类的数据进行初始化
- 静态方法的访问特点:编译看左边,运行看左边(静态方法是属于类的,算不上重写,所以访问还是左边的)
多态的好处
可总结如下
- 提高了代码的维护性(继承)
- 提高了代码的扩展性(多态)
多态虽然有好处,但是也有弊端。多态的弊端就是不能够访问子类特有的功能。(因为是父类引用指向子类对象)