Ich versuche gerade, einige Klassen zu schreiben, und ich komme über das folgende Problem:
Ich versuche, eine Klasse zu schreiben, die einige Funktionalität von zwei Schnittstellen implementiert
%Vor%Und ich habe zwei Klassen, die diese Schnittstellen implementieren:
%Vor%Gibt es so, wie ich das machen kann?
%Vor%Dies ist möglicherweise nicht genau das, was Sie wollen, aber Sie könnten eine dritte Schnittstelle erstellen, die beide erweitert:
%Vor% Dann würden FooA
und FooB
IAandB
anstelle von IA
und IB
direkt implementieren:
Dann können Sie thisClassImGonnaUse
vom Typ IAandB
:
Wenn es die Möglichkeit gibt, dass eine Klasse implementiert IA
und IB
, und diese Tatsache macht konzeptionell Sinn für die Problemdomäne, in der Sie arbeiten, die nur eine IAB
wie das
Bestimmen Sie , wenn es in Ihrem Fall sinnvoll ist, so einfach zu fragen wie was wäre ein guter Name für IAB? Wenn Sie eine zufriedenstellende Lösung finden können Beantworten Sie dies, Sie können nur diese Schnittstelle hinzufügen. Wenn nicht , dann ist der richtige Ort für Ihre zwei
%Vor% Zeilen wären eine Methode von FooA
oder FooB
(oder eine Basisklasse von diesen beiden). Auf diese Weise müssen Sie keine Umsetzungen oder Vermutungen über die Art der Klassen machen, die Ihre Schnittstellen implementieren (die später ungültig oder mühsam werden könnten).