什么是多态:是指同一行为,具有多个不同表现形式。
多态性是对象多种表现形式的体现。
多态理解:java中的多态就理解为对象的不同数据类型的体现也就是子类对象充当父类类型对象
格式:父类类型 变量名 = new 子类对象;(父类的引用指向子类对象)
? ? ? ? ? ?变量名.方法名();
多态的发生前提:
- 必须要有继承或实现(类与接口之间)关系
- 有方法的重写
- 表达式: 父类引用指向子类的对象
访问原则
成员变量:编译看左,运行看左。
成员方法:编译看左,运行看右。
(编译的时候,要看【=】左边的引用所属的类型中,是否有该方法的定义,如果有,就编译成功,如果没有,就编译失败。
运行的时候,要看【=】右边的对象所属的类型中,是如何实现这个方法的。最终运行的是子类重写过的方法实现。)
向上转型:
多态中,使用父类的引用指向子类的对象
Person p = new Teacher();// 向上转型
向下转型:
让指向子类对象的父类引用,【恢复】成子类的引用
子类类型 引用名称 = (子类类型)父类类型的引用;
Teacher t = (Teacher)p;
多态的好处:
提高了代码的可扩展性(灵活性)
在方法的参数列表中,形式参数是父类类型的引用,将来调用方法的时候,父类类型的任意子类对象,都可以作为方法的实际参数。
|