Hallo,
ich habe ein Verständnisproblem bei der Vererbung. Das Beispiel unten zeigt drei Klassen. Asub erbt von A und übergibt seinen Parameter (Objekt B) an die Superklasse weiter. A ruft die Methode test() im Konstruktor auf welche eine Variable von B ausgibt. Diese Methode wird in Asub überschrieben. Erzeuge ich nun, eine Instanz von Asub, dann wirft die test()-Methode von Asub einen Nullpointer, weil B noch nicht gesetzt wurde (super() wird aufgerufen, bevor B in Asub gesetzt wird).
Warum funktioniert das nicht? Müsste Asub nicht B von A erben? Wo liegt hier das Problem/der Fehler?
Vielen Dank
equin
ich habe ein Verständnisproblem bei der Vererbung. Das Beispiel unten zeigt drei Klassen. Asub erbt von A und übergibt seinen Parameter (Objekt B) an die Superklasse weiter. A ruft die Methode test() im Konstruktor auf welche eine Variable von B ausgibt. Diese Methode wird in Asub überschrieben. Erzeuge ich nun, eine Instanz von Asub, dann wirft die test()-Methode von Asub einen Nullpointer, weil B noch nicht gesetzt wurde (super() wird aufgerufen, bevor B in Asub gesetzt wird).
Warum funktioniert das nicht? Müsste Asub nicht B von A erben? Wo liegt hier das Problem/der Fehler?
Java:
public class A {
B b;
public A(B b){
this.b = b;
test();
}
public void test(){
System.out.println(b.testVar);
}
}
public class Asub extends A {
B b;
public Asub(B b){
super(b);
this.b = b;
}
public void test(){
System.out.println(b.testVar);
}
public static void main(String[] args) {
new Asub(new B());
}
}
public class B {
public String testVar = "test";
}
Vielen Dank
equin