Załóżmy, że mam następujących klasJava Casting z metodą zwraca
class A{
public method(A a) {
System.out.println(3);
}
}
class B extends A{
public void method (A a) {
System.out.println(2);
}
public void method (B b) {
System.out.println(1);
}
}
A obj = new B();
obj.method((B) obj);
((B) obj).method((B) obj);
Pierwsze wydruki metoda zawołać 2 a drukuje się drugi wywołać metodę 1. Dlaczego nie oba metoda nazywa wydruk 1?
Należy pamiętać, że kod nie zostanie skompilowany w niezmienionym stanie. –