Ich habe mehrere Klassen Parentund Child1... Child9in Java implementiert. Parentist eine abstrakte Klasse, die alle allgemeinen Variablen der untergeordneten Klassen enthält (viel, was der Hauptgrund ist, warum ich Parenteine abstrakte Klasse und keine Schnittstelle erstellt habe), einige abstrakte und einige implementierte Methoden.
Einige der untergeordneten Klassen verfügen über benutzerdefinierte Methoden, die für sie spezifisch sind. So oft rufe ich eine untergeordnete Methode mit Downcasting auf:
Parent p = new Child1();
((Child1) p).child1SpecificMethod();
Irgendwie habe ich das Gefühl, dass dies eine schlechte OOD-Praxis ist, aber ich bin mir nicht ganz sicher, ob dies wirklich der Fall ist bzw. wie das Design verbessert werden kann.
- Bearbeiten - Was ich wahrscheinlich sowieso ändern sollte, ist die Tatsache, dass ich die Parent-Klasse verwende, um viele (vorerst) allgemeine Variablen zu organisieren und sie (oder ein Containerobjekt) zu Mitgliedern der konkreten Klassen zu machen.
pals Parent? Das Festhalten an allgemeinen Typen ist eine gute Vorgehensweise für APIs und Rückgabetypen, jedoch nicht in demselben Bereich, in dem Sie selbst eine konkrete Klasse zuweisen.