Schnittstellen vererben?
-
Hi
Ich habe eine Oberklasse mit mehreren Unterklassen. Alle Unterklassen sollen ein Interface implementieren. Wenn ich jetzt die Oberklasse das Interface implementieren lasse müssen die Unterklassen die Methode nicht mehr implementieren
Kann ich irgendwie vorgeben das die abgeleiteten Klassen das Interface auch implementieren müssen?
-
Kann ich irgendwie vorgeben das die abgeleiteten Klassen das Interface auch implementieren müssen?
Wenn du in deiner Basisklasse alle Methoden des Interfaces implementierst, dann implementieren durch Vererbung auch all deine Subklassen automatisch alle Methoden des Interfaces.
-
das ist ja gerade das Problem! Alle Subklasse sollen das Interface unterschiedlich implementieren, daher brauche ich die Methode nur abstrakt in der Superklasse.
Da ich die Superklasse aber auch instanziieren muss kann ich sie nicht abstrakt machen.
-
Ich seh da irgendwie kein Problem.
In deiner Basisklasse implementierst du alle Methoden, so dass du sie instanziieren kannst.
All deine Subklassen erben zwar diese Methoden, aber du kannst sie ja stets in der jeweiligen Subklasse überschreiben - sprich anders implementieren.
-
All deine Subklassen erben zwar diese Methoden, aber du kannst sie ja stets in der jeweiligen Subklasse überschreiben - sprich anders implementieren.
Da hat der Interpreter recht. (Cooler Name o ist denn Compiler)
Die Subklassen können ja die einzelenen Methoden die für sich speziel sind neu implementieren das heisst die Methode überschreiben.
Damit wäre dein Problem gelöst.
-
jo das passt prinzipiell schon. Ich hätte es halt gerne gehabt wenn die Subklassen die Methoden definieren/überschreiben MÜSSEN.
-
ne da schaffst du nicht wenn du die Methoden schon implementiert hast.
-
Dann stimmt irgend etwas mit deinem Design nicht. Es scheint zu mindestens deinen Anforderungen nicht zu genügen.
Als Ausweichmöglichkeit kannst du z.B. eine Zwischenklasse wählen, von der die Klasse erbt, die du instanziieren möchtest. Alle anderen Klassen erben dann auch von dieser Zwischenklasse. Die Instanziierungsklasse implementiert dann nur die Methoden des Interfaces.
Mit der derzeitigen Lösung wirst du das, wie schon oben richtig gesagt, nicht hinbekommen.
/Dirk
-
Da hat der Interpreter recht. (Cooler Name o ist denn Compiler)
In diversen anderen Foren und Chats nenne ich mich "compyler"