Для следующего кода, почему он печатает 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);
}
}