1.何为多态性
答:可以理解为一个事物的多种形态
2.何为多态性
对象的多态性:父类的引用指向子类的对象
举例:
Person p = new Man();
Object obj = new Date();
3.多态性的使用:虚拟方法调用
3.1:有了对象的多态性的以后,我们在编译期,只能调用父类声明的方法,但在运行期间,我们实际执行的是子类重写父类的方法
3.2:总结:编译看左边 运行 看右边
4.多态性的使用前提
4.1类的继承关系
4.2方法的重写
5.多态性使用的注意点
对象的多态性,只适用于方法,不适用于属性
6.关于向上转型和向下转型
6.1向上转型:多态
6.2向下转型:
6.2.1为什么使用向下转型:
答:有了对象的多态性的以后,内存中实际上加载了子类特有的属性和方法,但是由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法。子类特有的属性和方法不能调用
如何才可以调用子类特有的属性和方法?
答:使用向下转型
6.2.2如何实现向下转型
答:使用强制类型转换符:()
6.2.3使用时的注意点
①使用强制转换时,可能出现ClassCastExcption的异常
②为了避免向下转型出现的ClassCastExcption的异常,我们在向下强制转换之前,先进行instanceof的判断,一旦返回true,就进行向下强制转换,若为false 则不能.
6.2.4instanceof的使用
a instanceof A a是一个引用(或者说a是一个对象) A是指的一个类
判断a是否是类A的实例 如果是 返回true 如果不是 返回 false
如果 a instanceof A 返回true ,a instanceof B 也返回true 则类B是类A的父类
要求a所属的类必须是类A 的子类或父类,否则编译错误
面试题:
1.谈谈你对多态性的理解
实现代码的通用性
抽象类、接口的使用
2.多态是编译时行为还是运行时行为
运行时行为