什么是编译看左,运行看右

我们经常在多态中遇到下面的类似情况,相同的成员变量名,父类引用指向子类对象,然后根据引用打印属性,一脸懵逼。。。看看代码回顾下

public class Animal {

    public int num = 1;

    public void run(){
        System.out.println("run..Animal...");
    }
}
public class Cat extends Animal{

    public int num = 2;

    @Override
    public void run() {
        System.out.println("Cat ...run..");
    }
}

public class Test {
    public static void main(String[] args) {
        Animal animal = new Cat();
        System.out.println(animal.num);
    }

}

输出
在这里插入图片描述
我也搞不懂,反正就记下来吧,哎~~~
口诀:成员变量,静态方法看左边;非静态方法:编译看左边,运行看右边

猜你喜欢

转载自blog.csdn.net/qq_42224683/article/details/107431364
今日推荐