Значение наследования метода от суперкласса вместо метода по умолчанию из реализации интерфейса в Java 8.JAVA

Программисты JAVA общаются здесь
Anonymous
Значение наследования метода от суперкласса вместо метода по умолчанию из реализации интерфейса в Java 8.

Сообщение Anonymous »

Я наткнулся на следующий абзац, читая здесь о методах по умолчанию в Java 8:


Если какой-либо класс в иерархии имеет метод с такой же сигнатурой, то методы по умолчанию становятся неактуальными. Метод по умолчанию не может переопределить метод из java.lang.Object. Аргументация очень проста: Object является базовым классом для всех классов Java. Таким образом, даже если у нас есть методы класса Object, определенные в интерфейсах как методы по умолчанию, это будет бесполезно, поскольку метод класса Object будет использоваться всегда. Вот почему, чтобы избежать путаницы, мы не можем использовать методы по умолчанию, которые переопределяют методы класса Object.


Я быстро попробовал следующий код, чтобы подтвердить поведение

Код: Выделить всё

public class DefaultMethodClass {
public void defaultMethod()
{
System.out.println("DefaultMethodClass.defaultMethod()");
}
}

public interface DefaultMethodInterface {
public default void defaultMethod()
{
System.out.println("DefaultMethodInterface.defaultMethod()");
}
}

public class DefaultMethodClassInterfaceChild extends DefaultMethodClass implements DefaultMethodInterface
{
public static void main(String[] args) {
(new DefaultMethodClassInterfaceChild()).defaultMethod();
}
}
Это печатает

Код: Выделить всё

DefaultMethodClass.defaultMethod()
Я не вижу какой-либо конкретной причины, по которой разработчик языка выбирает именно это поведение. Есть ли такая существенная причина, по которой мне не хватает? Или просто метод интерфейса по умолчанию логически имеет меньшую важность, чем конкретная реализация, предоставляемая суперклассом?

Подробнее здесь: https://stackoverflow.com/questions/515 ... ethod-from

Вернуться в «JAVA»