【发布时间】:2010-01-05 14:02:16
【问题描述】:
对于下面的代码,为什么会打印 A、B?我希望它能够打印 B,B。 另外,JVM执行的方法调用是动态评估还是静态评估?
public class Main {
class A {
}
class B extends A {
}
public void call(A a) {
System.out.println("I'm A");
}
public void call(B a) {
System.out.println("I'm B");
}
public static void main(String[] args) {
Main m = new Main();
m.runTest();
}
void runTest() {
A a = new B();
B b = new B();
call(a);
call(b);
}
}
【问题讨论】:
标签: java jvm overloading