Значение наследования метода от суперкласса вместо метода по умолчанию из реализации интерфейса в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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