Все хорошо, если у вас есть полный контроль над всем соответствующим кодом и вы можете реализовать это заранее.Теперь представьте, что у вас есть существующий открытый класс, используемый во многих местах с методом
public class MyClass{
private String name;
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
Теперь вам нужно передать его в готовый WizzBangProcessor, который требует классов для реализации WBPInterface ..., который также имеетgetName (), но вместо конкретной реализации этот интерфейс ожидает, что метод вернет имя типа обработки Wizz Bang.
В C # это будет тривиально
public class MyClass : WBPInterface{
private String name;
String WBPInterface.getName(){
return "MyWizzBangProcessor";
}
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
В Java Tough вам нужно будет идентифицировать каждую точку в существующей развернутой кодовой базе, где вам нужно конвертировать из одного интерфейса в другой.Конечно, компания WizzBangProcessor должна была использовать getWizzBangProcessName (), но они тоже разработчики.В их контексте getName был в порядке.На самом деле, за исключением Java, большинство других языков на основе OO поддерживают это.Java редко заставляет все интерфейсы реализовываться одним и тем же методом NAME.
В большинстве других языков есть компилятор, который более чем рад принять инструкцию, говорящую: «этот метод в этом классе, который соответствует сигнатуре этого метода в этом реализованном интерфейсе, является его реализацией».В конце концов, весь смысл определения интерфейсов состоит в том, чтобы позволить абстрагированию определения от реализации.(Даже не начинайте, чтобы у меня были методы по умолчанию в Интерфейсах в Java, не говоря уже о переопределении по умолчанию .... потому что, конечно, каждый компонент, предназначенный для дорожного автомобиля, должен быть в состоянии попасть в летающий автомобиль и просто работать - эйони оба машины ... Я уверен, что по умолчанию функциональность скажет, что ваша спутниковая навигация не будет зависеть от ввода по умолчанию и тональности, потому что машины только рыскать!