Heim > Java > javaLernprogramm > Wie geht Java mit Methodennamenkollisionen um, wenn mehrere Schnittstellen implementiert werden?

Wie geht Java mit Methodennamenkollisionen um, wenn mehrere Schnittstellen implementiert werden?

Mary-Kate Olsen
Freigeben: 2024-11-30 19:13:11
Original
592 Leute haben es durchsucht

How Does Java Handle Method Name Collisions When Implementing Multiple Interfaces?

Java-Schnittstellenimplementierung und Methodennamenkollisionen

Bei der Implementierung mehrerer Schnittstellen in Java kann es zu Methodennamenkollisionen kommen. Dies tritt auf, wenn Schnittstellen mit unterschiedlichen Zwecken Methoden mit derselben Signatur definieren. Im Gegensatz zu C#, wo die explizite Schnittstellenimplementierung mehrere Implementierungen derselben Methode ermöglicht, bietet Java keinen ähnlichen Mechanismus.

Begründung für die Einschränkung von Java

Java verbietet mehrere Implementierungen von Verwenden Sie dieselbe Methode, um mögliche Unklarheiten und Verwirrungen zu vermeiden. Dadurch wird sichergestellt, dass ein Methodenaufruf unabhängig von der aufrufenden Schnittstelle immer dieselbe zugrunde liegende Implementierung aufruft.

Beispiel

Betrachten Sie den folgenden Code:

interface ISomething {
    void doSomething();
}

interface ISomething2 {
    void doSomething();
}

class Impl implements ISomething, ISomething2 {
   void doSomething() {} // Java only allows one implementation of this method.
}
Nach dem Login kopieren

In diesem Beispiel gibt es keine Möglichkeit, jeweils zwei separate Implementierungen der doSomething()-Methode in der Impl-Klasse zu definieren Schnittstelle.

Problemumgehung

Wenn Sie ein eindeutiges Verhalten basierend auf der aufrufenden Schnittstelle benötigen, sollten Sie einen kompositorischen Ansatz in Betracht ziehen, indem Sie eine zusammengesetzte Klasse erstellen, die an einzelne Klassen delegiert, die bestimmte implementieren Schnittstellen:

class CompositeClass {
    ISomething class1;
    ISomething2 class2;
    void doSomething1(){class1.doSomething();}
    void doSomething2(){class2.doSomething();}
}
Nach dem Login kopieren

In dieser Lösung stellt die CompositeClass eine Fassade für die Implementierung beider Schnittstellen bereit und delegiert gleichzeitig an separate Klassen für bestimmte Methoden Implementierungen.

Das obige ist der detaillierte Inhalt vonWie geht Java mit Methodennamenkollisionen um, wenn mehrere Schnittstellen implementiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage