Direkt über den parent-Konstruktor aufrufen, Großeltern

Das problem ist Folgendes: ich habe eine abstrakte Klasse, die einige arbeiten in seinem Konstruktor, und eine Reihe von untergeordneten Klassen, implementieren Sie die abstrakte Klasse:

class AbstractClass {
     AbstractClass(){ /* useful implementation */ }
}

class ConcreteClass1 extends AbstractClass {
     ConcreteClass1(){ super(); /* useful implementation */ }
}

Dann die konkreten Klassen müssen angepasst werden und eine Lösung ist zu verlängern die konkreten Klassen:

class CustomizedClass1 extends ConcreteClass1 {
    CustomizedCLass1(){ super(); /* useful implementation */ }
}

ABER das problem ist, dass die angepassten Klassen müssen nur zu nennen die abstrakte Klasse Konstruktor und nicht die konkrete Klasse Konstruktor.

Wie erreichen Sie diese? Vorschläge, die Klasse zu wechseln die Beziehungen gültig sind.

EDIT: Das konkrete Beispiel ist, dass ConcreteClass1 und CustomizedClass1 haben unterschiedliche Sätze von Daten (ConcreteData1 und CustomizedData1), und es ist aus der Datenbank abgerufen im Konstruktor der Klasse. Das problem ist, dass das erstellen einer Instanz von CustomizedClass1 abrufen von Daten-Entitäten.

Ich bin mir bewusst, dass mit einfachen Vererbung es ist wahrscheinlich nicht die beste Sache zu tun, deshalb habe ich darauf hingewiesen, dass Vorschläge, die Klasse zu wechseln die Beziehungen gültig sind.

Wenn Sie nicht rufen Sie die ConcreteClass1 Konstruktor, es ist nicht ein ConcreteClass1.
Einige Antworten zeigen einige tricks, um dies zu tun, aber dies SEHR unnatürlich in Java und OO. Die besten Antworten werden eine große Herausforderung für Ihr Objekt-design und Sie ermutigen, zu denken ist-Ein und hat-Ein Beziehungen.
Aber die Geschwindigkeit der Entwicklung kann manchmal auch egal, nicht wahr?
Verwandte Themen: stackoverflow.com/questions/586363/...

InformationsquelleAutor German | 2009-12-10

Schreibe einen Kommentar