class Base { void test() { System.out.println("Base.test()"); } } class Child extends Base { void test() { System.out.println("Child.test()"); } } public class Main { public static void main(String[] a) { Child anObj = new Child(); Base baseObj = anObj; baseObj.test(); } }
时间: 2024-04-22 16:22:03 浏览: 165
执行代码的输出结果是 `Child.test()`。
首先,定义了一个 `Child` 类型的对象 `anObj`,然后将其赋值给 `Base` 类型的引用变量 `baseObj`。由于 `Child` 类是 `Base` 类的子类,可以将 `Child` 类型的对象赋值给 `Base` 类型的引用变量。
接着,调用 `baseObj.test()` 方法时,由于 `baseObj` 引用的对象是 `Child` 类型的,因此调用的是 `Child` 类中重写的 `test()` 方法,输出的结果是 `Child.test()`。
因为 Java 是动态绑定方法调用,所以在运行时会根据对象的实际类型来调用相应的方法,而不是根据引用变量的类型来调用方法。因此,在这个例子中,调用 `baseObj.test()` 方法时,实际调用的是 `Child` 类中重写的 `test()` 方法。
阅读全文