多态的理解
一.多态的三个必要条件
1. 多态是方法的多态,不是属性的多态
2. 父类和子类,有联系,
3. 存在条件,方法的重写,继承,父类应用指向子类对象
二.编译,运行时
1、编译时多态,即方法的重载,从JVM的角度来讲,这是一种静态分派(static dispatch)
2、运行时多态,即方法的重写,从JVM的角度来讲,这是一种动态分派(dynamic dispatch)
三.访问成员变量的两种方式
1. 直接通过对象名称访问成员变量,看等号左边是谁,优先用谁,没有则向上找.
如果是访问方法,就要看等号右边是谁,优先用谁,没有则向上找,因为方法可以覆盖重写,变量不可以
2. 间接通过成员方法访问
四.访问成员方法的方式
看等号右边是谁优先用谁,没有则向上找
五.如何才能知道一个父类引用单的对象,本来是什么类?
格式:
对象 instanceof类名称
这将会得到一个Boolean值结果,也就是判断前面的对象能不能当做后面类型的实例。
总结:
成员变量:编译看等号“=”左边,运行看等号右边。
成员方法:编译看等号“=”左边,运行看等号右边
在多态的代码当中,成员方法的访问规则是:
看new的是谁,就优先用谁,没有则向上找
自己写个小例子试一试就知道了,没什么复杂的