Angenommen, ich habe zwei Schnittstellen:
%Vor%und
%Vor%Eine konkrete Klasse implementiert beide Schnittstellen:
%Vor%Meine Fragen sind:
method()
für beide Schnittstellen IOne und ITwo aus? Für 1 lautet die Antwort yes . Es genügt, eine Implementierung für die Methode in der Klasse bereitzustellen, damit beide Schnittstellen automatisch implementiert werden können.
Wenn Sie für beide Methoden beide Methoden verwenden müssen, sollte Ihre Klasse nicht beide Schnittstellen implementieren. Es gibt jedoch einen Trick, den Sie verwenden können:
%Vor%Testcode:
%Vor% Die Klasse A
muss nicht beide Schnittstellen implementieren. In diesem Fall implementieren Sie einfach nicht method()
für A
und behalten nur die anonymen inneren Klassen.
Wenn beide Methoden die gleiche Signatur haben, wie in Ihrem Beispiel, ist nur eine Implementierung möglich . In diesem Fall gibt es keine Möglichkeit, zwei Versionen der Methode für die zwei Schnittstellen zu implementieren. Also, das Beispiel wird ausreichen.
Wenn die Signatur für beide Methoden gleich ist, aber unterschiedliche Rückgabetypen aufweist, führt dies zu einem Kompilierungsfehler.
Wenn die beiden Methoden unterschiedliche Signaturen haben, kann und muss es zwei verschiedene Implementierungen geben.
Reicht die einzelne Implementierung von method () für die Schnittstelle IOne und ITwo aus?
Ja. Die Implementierung ist für beide Methoden abstract
identisch.
Wenn die Antwort von 1 ja ist, gibt es eine Möglichkeit, beide Methoden in einer einzigen Klasse zu finden?
Nein.
Ja. Diese Methode wird aufgerufen, wenn auf die Klasse als Instanz von IOne
oder ITwo
zugegriffen wird.
Nein. Der Name, der Rückgabetyp und die Argumente einer Methode definieren die Signatur einer Methode, und zwei Methoden innerhalb derselben Klasse können nicht dieselbe Signatur aufweisen. Dies führt zu einem Fehler bei der Kompilierung.
Eine Lösung, die ich vorschlage, ist die Verwendung verschiedener Methodennamen für IOne.method und ITwo.method, wodurch die Signatur jeder Methode einzigartig wird. Dadurch können Sie zwei eindeutige Methoden in einer einzelnen Klasse definieren.
Tags und Links java design-patterns design oop interface