1

根据链接中的这个答案https://stackoverflow.com/a/6606490/4816065

在 Sun 的一些 Java 虚拟机实现中,对类实例的引用是指向句柄的指针,句柄本身就是一对指针:一个指向包含对象方法的表,另一个指向代表对象的类型,另一个是从堆中为对象数据分配的内存。

因此,给定两个类 A 和 B 如下:

class A{
    void m1(){
        System.out.println(" from m1 method ");
    }
}

class B extends A {
    void m2(){
        System.out.println(" from m2 method ");
    }
}

在主要方法中,我制作对象如下:

A a1 = new A(); // The dispatch table of a1 contains only method m1.
B b1 = new B(); // The dispatch table of b1 contains method m1 and m2.
A a2 = new B(); // What will the dispatch table of a2 be?

它只有 m1(因为 Object 引用是 A 类型)还是有 m1 和 m2(因为引用的对象是 B 类型)?

4

0 回答 0