Страницы

Поиск по вопросам

понедельник, 17 декабря 2018 г.

Разница между методом по умолчанию в интерфейсе и обычным методом в классе

Чем отличаются между собой метод по умолчанию, объявленный в интерфейсе с модификатором default и обычный метод, объявленный в обычном классе?
(update) Читаю
Метод по умолчанию представляет собой метод, который объявлен в интерфейсе с модификатором default; его тело всегда представлено блоком. Он предоставляет реализацию по умолчанию для любого класса, который реализует интерфейс без перекрытия метода. Методы по умолчанию отличны от конкретных методов, которые объявляются в классах.


Ответ

default метод не может обращаться к состоянию объекта (полям объекта), так как никакого объекта нет, но может вызвать другие методы и обращаться к статическим данным (константам).
default метод позволяет избежать необходимости изменить все классы, которые реализуют этот интерфейс.
В классе, реализующим интерфейс с default методами, вы можете их переопределить.
interface I1 { // это public static final int i = 0; // но в описании интерфейса public static final можно опустить int i = 0; default void m1() { System.out.println("I1 m1 i = " + i); m2(); }
void m2(); }
Без default этот класс бы не скомпилировался:
public class C1 implements I1 { @Override public void m2() { System.out.println("C1 m2"); }
public static void main(String[] args) { new C1().m1(); new C1().m2(); } }
Вывод будет следующим:
I1 m1 i = 0 C1 m2 C1 m2

Комментариев нет:

Отправить комментарий