Ich möchte eine
Klasse X kann (this) dem
erbt von A (Basis)
die Methoden der B ausführen schreiben (?) Und die Mitglieder
implementieren müssen von C (Schnittstelle).Gibt es so etwas wie eine Klasse, die implementiert werden kann?
Implementieren von A und C sind kein Problem. Aber da X nicht von mehreren Klassen abgeleitet werden kann, scheint es unmöglich zu sein, dass X die Logik von A und B erbt. Beachte, dass A die sehr wichtige Basisklasse ist und B fast eine Schnittstelle ist, aber ausführbares Verhalten enthält. Der Grund, warum ich nicht möchte, dass B eine Schnittstelle ist, liegt darin, dass das Verhalten für jede Klasse, die es erbt oder implementiert, gleich ist.
Muss ich wirklich B als Schnittstelle deklarieren und die exakt gleichen 10 Codezeilen für jedes X implementieren, das das Verhalten von B benötigt?
2 Monate später
Ich bin derzeit Lernen C++ für sie in UE4 (Unreal Engine 4) verwendet wird.
Da C++ ist viel weniger streng als C# es einen tatsächlich enthält Muster Implementierung idom Begriff, der dieses Verhalten beschreibt: Diese mixin s genannt werden.
Sie können einen Absatz über die C++ - Mischung here auf Seite 9 (zweiter Absatz) lesen.
Warum erben Sie einfach B von A oder umgekehrt? –
Warum können Sie hier keine Komposition verwenden? Delegieren Sie die Methoden von B an eine Instanz von B ...(Es ist sehr schwierig, über so etwas auf eine so abstrakte Art zu sprechen. Es wäre hilfreicher, wenn Sie ein konkretes Beispiel geben würden.) –
@ k4rlsson Weil nicht jedes X B benötigt (der Entwickler sollte es implementieren können) oder nicht) –