Alles schön und gut, wenn Sie die vollständige Kontrolle über den gesamten fraglichen Code haben und dies im Voraus implementieren können. Stellen Sie sich nun vor, Sie haben eine vorhandene öffentliche Klasse, die an vielen Stellen mit einer Methode verwendet wird
public class MyClass{
private String name;
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
Jetzt müssen Sie es an den Standard-WizzBangProcessor übergeben, für den Klassen erforderlich sind, um das WBPInterface zu implementieren ... das ebenfalls eine getName () -Methode enthält. Anstelle Ihrer konkreten Implementierung erwartet diese Schnittstelle jedoch, dass die Methode den Namen eines Typs zurückgibt von Wizz Bang Processing.
In C # wäre es ein Trvial
public class MyClass : WBPInterface{
private String name;
String WBPInterface.getName(){
return "MyWizzBangProcessor";
}
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
In Java Tough müssen Sie jeden Punkt in der vorhandenen bereitgestellten Codebasis identifizieren, an dem Sie von einer Schnittstelle zur anderen konvertieren müssen. Sicher, die Firma WizzBangProcessor hätte getWizzBangProcessName () verwenden sollen, aber sie sind auch Entwickler. In ihrem Kontext war getName in Ordnung. Außerhalb von Java unterstützen dies die meisten anderen OO-basierten Sprachen. Java erzwingt selten, dass alle Schnittstellen mit derselben Methode NAME implementiert werden.
Die meisten anderen Sprachen haben einen Compiler, der gerne eine Anweisung entgegennimmt, um zu sagen: "Diese Methode in dieser Klasse, die mit der Signatur dieser Methode in dieser implementierten Schnittstelle übereinstimmt, ist ihre Implementierung." Schließlich geht es beim Definieren von Schnittstellen darum, dass die Definition von der Implementierung abstrahiert wird. (Lassen Sie mich nicht einmal anfangen, Standardmethoden in Interfaces in Java zu verwenden, geschweige denn Standardmethoden zu überschreiben ... denn sicher sollte jede für ein Straßenauto entwickelte Komponente in der Lage sein, in ein fliegendes Auto eingeschlagen zu werden und einfach zu arbeiten - hey Sie sind beide Autos ... Ich bin sicher, dass die Standardfunktionalität Ihres Navigationsgeräts nicht durch Standard-Pitch- und Roll-Eingaben beeinflusst wird, da Autos nur gieren!