假设有如下Java类结构: ```java class Base { public void method() { System.out.println("Base method"); } } class Derived extends Base { public void method() { System.out.println("Derived method"); } public void method(int i) { System.out.println("Derived method with int"); } } public class Main { public static void main(String[] args) { Base b = new Derived(); b.method(1); } } ``` 以上代码运行时会发生什么?

答案解析

本题考察的是继承中的方法重写和重载以及多态的运用。这里`b`变量的静态类型是`Base`,虽然它指向的是一个`Derived`对象,但是调用方法时,会首先根据静态类型在`Base`类中查找是否存在`method(int)`方法,由于不存在,编译器会报错。选项A和B都是错误的,因为没有成功调用任何方法;选项D也是错误的,因为根本不会到运行时阶段。正确的答案是C, 因为在编译时静态类型Base没有对应的方法,从而导致编译错误。
正确答案:C
随机推荐
开始刷题