Ein gutes neues Jahr!
Ich hab gerade ein vermutlich banales Problem, aber ich finde keine Lösung, die mir gefällt.
Ausgangspunkt ist eine abstrakte Klasse
Und eine Kindklasse, die durch überschreiben der abstrakten Methode, eine wichtige Information liefern soll, die durch die abstrakte Klasse verarbeitet werden müssen.
Geht nur nicht, weil der Parent-Konstruktor vor dem Child-Konstruktor ausgeführt wird. Die überschriebene Methode wird zwar korrekt im Parent-Konstruktor aufgerufen, aber die Daten sind da noch nicht gesetzt und damit null. Ich möchte die Daten nicht in der Methode erzeugen, weil sie von außen (z. B. über den Konstruktor) injiziert werden sollen.
Irgendwie stehe ich gerade auf dem Schlauch. Help!
Ich hab gerade ein vermutlich banales Problem, aber ich finde keine Lösung, die mir gefällt.
Ausgangspunkt ist eine abstrakte Klasse
Java:
public abstract class Parent {
public Parent() {
System.out.println("Parent Konstruktor");
System.out.println(getData());
}
protected abstract String getData();
}
Und eine Kindklasse, die durch überschreiben der abstrakten Methode, eine wichtige Information liefern soll, die durch die abstrakte Klasse verarbeitet werden müssen.
Java:
public class Child extends Parent {
private String data;
public Child(String data) {
this.data = data;
}
@Override
protected String getData() {
return "Child Methode " + data;
}
}
Java:
public static void main(String args[]) {
Child child = new Child("Wichtige Daten");
}
Geht nur nicht, weil der Parent-Konstruktor vor dem Child-Konstruktor ausgeführt wird. Die überschriebene Methode wird zwar korrekt im Parent-Konstruktor aufgerufen, aber die Daten sind da noch nicht gesetzt und damit null. Ich möchte die Daten nicht in der Methode erzeugen, weil sie von außen (z. B. über den Konstruktor) injiziert werden sollen.
Irgendwie stehe ich gerade auf dem Schlauch. Help!