W
Wodka-RedBull
Gast
Code:
class L1 {
protected int m1() {
return 1;
}
private m2() {
return 1;
}
public int out1() {
return m1();
}
public int out2() {
return m2();
}
}
class L2 extends L1 {
protected int m1() {
return 2;
}
int m2() {
return 2;
}
public static void main(String[] args) {
L1 a = new L1();
L2 b = new L2();
System.out.println(a.out1()); // Stelle 1 Muss 1 raus kommen
System.out.println(b.out1()); // Stelle 2 Muss 2 raus kommen
System.out.println(a.out2()); // Stelle 3 Muss 1 raus kommen
System.out.println(b.out2()); // Stelle 4 Muss 1 raus kommen
}
}
Jetzt die Frage WARUM ZUR HÖLLE kommt bei der Stelle 4, 1 raus und nicht 2???
Also... bei b.out2() (beim aufruf) da geht der in die Vererbte out2 von L1 rein. Dann geht der in der Methode out2 in die Methode int m2() von L2 extends L1. Warum, weil das b vom aufruf b.out2() ein Typ von L2 ist.
So erkläre ich mir das aber es ist falsch es muss 1 hin kommen. WARUM??
MFG
Wodka-RedBull