Looking for java Answers? Try Ask4KnowledgeBase
Looking for java Keywords? Try Ask4Keywords

Java LanguageМетоды по умолчанию


Вступление

Метод по умолчанию, введенный в Java 8, позволяет разработчикам добавлять новые методы в интерфейс без нарушения существующих реализаций этого интерфейса. Он обеспечивает гибкость, позволяющую интерфейсу определять реализацию, которая будет использоваться по умолчанию, когда класс, который реализует этот интерфейс, не может обеспечить реализацию этого метода.

Синтаксис

  • public default void methodName () {/ * метод body * /}

замечания

Методы по умолчанию

  • Может использоваться в интерфейсе, чтобы ввести поведение, не заставляя существующие подклассы реализовывать его.
  • Может быть переопределено подклассами или под-интерфейсом.
  • Не разрешено переопределять методы в классе java.lang.Object.
  • Если класс, реализующий более одного интерфейса, наследует методы по умолчанию с идентичными сигнатурами методов из каждой из intefaces, тогда он должен переопределять и предоставлять свой собственный интерфейс, как если бы они не были методами по умолчанию (как часть разрешения множественного наследования).
  • Хотя они предназначены для введения поведения без нарушения существующих реализаций, существующие подклассы со статическим методом с той же сигнатурой метода, что и новый метод по умолчанию, будут по-прежнему нарушаться. Однако это верно даже в случае введения метода экземпляра в суперкласс.



Статические методы

  • Может использоваться в интерфейсе, в первую очередь предназначенном для использования в качестве метода утилиты для методов по умолчанию.
  • Не может быть переопределен подклассами или под-интерфейсом (скрыт от них). Однако, как и в случае со статическими методами даже сейчас, каждый класс или интерфейс могут иметь свои собственные.
  • Не разрешено переопределять методы экземпляра в классе java.lang.Object (как и в случае с подклассами).



Ниже приведена таблица, суммирующая взаимодействие между подклассом и суперклассом.

- SUPER_CLASS-INSTANCE-METHOD SUPER_CLASS-STATIC-МЕТОД
SUB_CLASS-INSTANCE-METHOD Переопределение генерирует-compiletime-ошибку
SUB_CLASS-STATIC-МЕТОД генерирует-compiletime-ошибку шкуры



Ниже приведена таблица, суммирующая взаимодействие между интерфейсом и классом реализации.

- ИНТЕРФЕЙС-DEFAULT-МЕТОД ИНТЕРФЕЙС-STATIC-МЕТОД
IMPL_CLASS-INSTANCE-METHOD Переопределение шкуры
IMPL_CLASS-STATIC-МЕТОД генерирует-compiletime-ошибку шкуры

Рекомендации :

  • http://www.journaldev.com/2752/java-8-interface-changes-static-method-default-method
  • https://docs.oracle.com/javase/tutorial/java/IandI/override.html

Методы по умолчанию Связанные примеры