Ich habe eine abstrakte Klasse Entity
. Jede Klasse, die Entity
erweitert, benötigt einige Standardeinstellungen und einige anpassbare Einstellungen:
Meine erweiterbare Klasse MyEntity
nimmt einen Parameter im Konstruktor, der in customSetup()
verwendet wird:
Wie der Kommentar sagt, funktioniert dieser Code nicht.
Ich könnte einfach customSetup()
wegwerfen und den ganzen angepassten Code nach super()
einfügen, aber diese abstrakte Methode macht deutlicher, was du da einfügen sollst.
Ich fühle mich, als würde ich gegen eine Regel des OOP-Designs verstoßen. Was ist der richtige Weg, um zu tun, was ich will?
Dies ist im Allgemeinen eine schlechte Idee, Methoden aufzurufen, die von einem Konstruktor überschrieben werden können. Das Problem ist, dass die Klasse noch nicht vollständig initialisiert ist, und wenn die Methode in einer Unterklasse aufgerufen wird, kann es zu Problemen führen.
Sehen Sie sich diese Frage an: Was mit Overridable-Methodenaufrufen falsch ist in Konstruktoren? , es hat eine gute Erklärung.