Hallo Leute,
ich hatte heute ein langwieriges Problem und bin letzten Endes auf die Lösung gekommen.
Leider versteh ich den Code nicht ganz und wollte hier mal fragen, ob mir das einer erklären kann.
Ich habe hier mal ein Beispiel vorbereitet:
Meine Ausgabe ist diese hier:
Wenn ich in der Subclass einfach
Funktioniert der Code.
Mein Problem ist, dass nach meinem Verständnis erst die Attribute der Subclass erstellt werden und dann der Konstruktor kommt. Dies scheint aber wohl nicht so zu sein, kann ich mit dem Debugger nachvollziehen. Allerdings versteh ich auch nicht ganz, wie die überschriebene Methode setValue wenn ich die Subklasse aufrufe und din der Superklasse ausgeführt wird, überhaupt auf die valueB zugreifen kann, wenn diese nicht initialisiert ist.
Komischer Satz, ich hoffe man versteht es.
Ich danke euch schonmal für eine Erklärung.
ich hatte heute ein langwieriges Problem und bin letzten Endes auf die Lösung gekommen.
Leider versteh ich den Code nicht ganz und wollte hier mal fragen, ob mir das einer erklären kann.
Ich habe hier mal ein Beispiel vorbereitet:
Java:
public class Main {
public static void main(String[] args) {
SuperClass superclass = new SuperClass();
SubClass subclass = new SubClass();
System.out.println(superclass.getValueA());
System.out.println(subclass.getValueA() + " " + subclass.getValueB());
}
}
public class SuperClass {
String valueA = "a";
public SuperClass(){
setValue();
}
protected void setValue(){
this.valueA = "a";
}
public String getValueA(){
return this.valueA;
}
}
public class SubClass extends SuperClass{
String valueB = null;
public SubClass(){
super();
}
@Override
protected void setValue(){
this.valueA = "someThing";
this.valueB = "B";
}
public String getValueB(){
return this.valueB;
}
}
Code:
a
someThing null
Wenn ich in der Subclass einfach
Java:
String valueB;
Funktioniert der Code.
Mein Problem ist, dass nach meinem Verständnis erst die Attribute der Subclass erstellt werden und dann der Konstruktor kommt. Dies scheint aber wohl nicht so zu sein, kann ich mit dem Debugger nachvollziehen. Allerdings versteh ich auch nicht ganz, wie die überschriebene Methode setValue wenn ich die Subklasse aufrufe und din der Superklasse ausgeführt wird, überhaupt auf die valueB zugreifen kann, wenn diese nicht initialisiert ist.
Komischer Satz, ich hoffe man versteht es.
Ich danke euch schonmal für eine Erklärung.