Я хочу знать, почему третий выход НЕ Б.
Вот мой код:
public class SimpleTests {
public void func(A a) {
System.out.println("Hi A");
}
public void func(B b) {
System.out.println("Hi B");
}
public static void main(String[] args) {
A a = new A();
B b = new B();
A c = new B();
SimpleTests i = new SimpleTests();
i.func(a);
i.func(b);
i.func(c);
}
}
class A {}
class B extends A {}
И вот вывод:
Hi A
Hi B
Hi A
Может ли кто-нибудь сказать мне, почему 3-й выход - это Hi A
, NOT Hi B
поскольку реальный c является экземпляром B.