多态的理解

一.多态的三个必要条件

1. 多态是方法的多态,不是属性的多态

2. 父类和子类,有联系,  

3. 存在条件,方法的重写,继承,父类应用指向子类对象

 

二.编译,运行时

1、编译时多态,即方法的重载,从JVM的角度来讲,这是一种静态分派(static dispatch)

2、运行时多态,即方法的重写,从JVM的角度来讲,这是一种动态分派(dynamic dispatch)

 

 

三.访问成员变量的两种方式

1. 直接通过对象名称访问成员变量,看等号左边是谁,优先用谁,没有则向上找.

  如果是访问方法,就要看等号右边是谁,优先用谁,没有则向上找,因为方法可以覆盖重写,变量不可以

2. 间接通过成员方法访问

 

四.访问成员方法的方式

看等号右边是谁优先用谁,没有则向上找

五.如何才能知道一个父类引用单的对象,本来是什么类?

格式:

    对象 instanceof类名称

    这将会得到一个Boolean值结果,也就是判断前面的对象能不能当做后面类型的实例。

总结:

成员变量:编译看等号“=”左边,运行看等号右边。

成员方法:编译看等号“=”左边,运行看等号右边

在多态的代码当中,成员方法的访问规则是:

看new的是谁,就优先用谁,没有则向上找

 

自己写个小例子试一试就知道了,没什么复杂的

原文地址:https://www.cnblogs.com/shuai666/p/14467700.html