Mam dwie klasy, Test1 i Test2. Teraz:
public class Test1 {
private int x = 1;
protected Test1(){
System.out.println("Test1 constructor");
}
public void method(){
System.out.println("Test1 method");
}
public void method2(){
System.out.println("Test1 method2");
}
}
I
public class Test2 extends Test1 {
protected Test2(){
System.out.println("Test2 constructor");
}
public void method(){
System.out.println("Test2 method");
}
}
Metoda main:
public static void main(String[] args){
Test2 t = new Test2();
Test1 t2 = (Test1)t;
t2.method();
t2.method2();
}
Wyrzuca mi output w takiej kolejności:
Test1 constructor
Test2 constructor
Test2 method
Test1 method2
Pytanie: dlaczego? Dlaczego jest wywoływany konstruktor testu1, skoro nie dałem super? Czy to mój Eclipse po prostu poprawia kod?
Inna sprawa - dlaczego wyrzuca mi "Test2 method" skoro w teorii t2 było zrzutowane na Test1?