Java中的静态和动态类型

时间:2019-01-08 11:19:57

标签: java types

我对编译时类型(静态)和运行时类型(动态)类型有疑问。据我了解,如果子类重写某个超类的方法,然后在调用诸如Parent pTom = tom之类的东西时,则不得使用被重写的pTom方法,而必须实例化覆盖该方法的方法。

public class Parent {
    int x = 0;
    static void f() {
        System.out.println("Ahem");
    }
}

public class Child extends Parent {
    int x = 5;
    static void f() {
        System.out.println("No way!");
    }
    public static void main(String[] args) {
        Child tom = new Child();
        System.out.println(tom.x); //output is No way!
        Parent pTom = tom;
        pTom.f();
        System.out.println(pTom.x); //output is Ahem
   }
}

您能帮助我阐明我的理解吗?

0 个答案:

没有答案
相关问题