易百教程

106、以下 Java 程序的输出是什么?


class BaseTest {

    void print() {
        System.out.println("BaseTest:print() called");
    }
}

public class Test extends BaseTest {

    void print() {
        System.out.println("Test:print() called");
    }

    public static void main(String args[]) {
        BaseTest b = new Test();
        b.print();
    }
}

运行结果:

Test:print() called

解释 :它是动态方法分派的一个例子。 引用变量 b 的类型在运行时确定。 在编译时,检查该方法是否存在于基类中。 在这种情况下,它在子类中被覆盖,因此,在运行时调用派生类方法。