多态详解
多态
基本介绍
方法或者对象具有多种形态,是面向对象的第三大特征,多态是建立在封装和继承基础之上的
具体体现
方法的多态
方法重载体现多态
对象的多态
- 一个对象的编译类型和运行类型可以不一致
- 编译类型在定义对象时就确定了,不能改变
- 运行类型是可以变化的
- 编译类型看定义时 = 的左边,运行类型看 = 的右边
注意事项
多态的前提是两个对象所在的类存在继承关系
多态向上转型
- 本质 父类的引用指向子类的对象
- 语法 父类类型 引用名 = new 子类型();
- 特点:
- 编译类型看左边,运行类型看右边
- 可以调用父类中的所有成员(遵守访问权限)
- 不能调用子类中特有成员
- 最终运行效果看子类的具体实现
多态向下转型
- 语法:子类类型 引用名= (子类类型)父类引用
- 只能强转父类的引用,不能强转父类的对象
- 要求父类的引用必须指向的是当前目标类型的对象
- 当向下转型后,可以调用子类类型中所有的成员