Java12 多态中对成员的调用

1.成员变量

当子父类出现同名变量时
多态调用时,只看调用引用所属类中的成员变量
简单说:无论编译或者运行,只看等号的左面

2.成员方法

当子父类出现 同名 方法时
多态调用时,编译时看引用变量所属的方法
运行时看的是对象所属的类中的方法
简单说:编译看左边,运行看右边

class Fu{
    int num=4;
    void show() {System.out.println("FU run");}
}
class Zi extends Fu{
    int num=7;
    //void show() {System.out.println("ZI run");}
}
public class DuoTai1Demo {
    public static void main(String[] args) {
        Fu fu=new Zi();
        System.out.println(fu.num);
        fu.show();
    }
}

编译是否通过时,看Fu类中时候有fu.show方法因为编译时不会创建对象
运行时,创建zi类对象,看子类中是否有show方法。
运行结构
Fu run(Super();调用父类方法)
成员方法动态绑定在当前对象上

3.静态方法

静态方法和对象没有关系 只和类有关系

你可能感兴趣的:(Java12 多态中对成员的调用)