多态成员的特点
- A:多态成员变量
- 当子父类中出现同名的成员变量时,多态调用该变量时:
- 编译时期:参考的是引用型变量所属的类中是否有被调用的成员变量。没有,编译失败。
- 运行时期:也是调用引用型变量所属的类中的成员变量。
简单记:编译和运行都参考等号的左边。编译运行看左边。
- B:多态成员方法
- 编译时期:参考引用变量所属的类,如果没有类中没有调用的方法,编译失败。
- 运行时期:参考引用变量所指的对象所属的类,并运行对象所属类中的成员方法。
简而言之:编译看左边,运行看右边
package com.itheima_01;
/*
* 多态的特点:
* 成员变量:编译时看的是左边,运行时看的是左边
* 成员方法:编译时看的是左边,运行时看的是右边
* 静态方法:编译时看的是左边,运行时看的也是左边
*
* 编译时看的都是左边,运行时成员方法看的是右边,其他(成员变量和静态的方法)看的都是左边
*/
public class PoymorphicDemo2 {
public static void main(String[] args) {
Dad d = new Kid();
// System.out.println(d.num);//20 变量没有重写的概念
// d.method();//我是子类方法
d.function();//我是父类静态方法 使用变量去调用静态方法,其实相当于用变量类型的类名去调用
}
}
class Dad {
int num = 20;
public void method() {
System.out.println("我是父类方法");
}
public static void function() {
System.out.println("我是父类静态方法");
}
}
class Kid extends Dad {
int num = 10;
public void method() {
System.out.println("我是子类方法");
}
public static void function() {
System.out.println("我是子类静态方法");
}
}
网友评论