Если какой-либо класс в иерархии имеет метод с такой же сигнатурой, то методы по умолчанию становятся неактуальными. Метод по умолчанию не может переопределить метод из 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
Мобильная версия