Начиная с версии JDK 8, у интерфейсов появилась еще одна возможность: определять в нем один или несколько статических методов. Аналогично статическим методам в классе, метод, объявляемый как static в интерфейсе, можно вызывать независимо от любого объекта. Для этого метод должен быть определен в интерфейсе. Для вызова статического метода достаточно указать имя интерфейса и через точку имя самого метода. Ниже приведена общая форма вызова статического метода из интерфейса. Обратите внимание на ее сходство с формой вызова статического метода из класса.
имя_интерфейса.имя_статического_метода
Статические методы из интерфейсов не наследуются ни реализующими их классами, ни интерфейсами наследниками.
Как видим на примере слева в интерфейсе MyInt определен статический метод prt1() с реализацией, а так же объявлен метод prt2() без реализации.
Так же мы создали класс Prt, который имплементирует интерфейс MyInt, но он не унаследовал метод prt1(), так как он является статическим.
Класс Interf01 у нас так же реализует интерфейс MyInt и кроме того он содержит метод main(). Поскольку он реализует интерфейс MyInt, так же возникла необходимость определения метода prt2().
Этот метод prt2() не является статическим и поэтому его без танцев с бубном из статического метода main() вызвать нельзя.
Танцы с бубном продемонстрированы в последних двух строках метода main().
Вывод у программы следующий:
Первая строка выводится вызовом статического метода prt1() на интерфейсе. Вторая строка выводится вызовом метода prt2() на экземпляре класса Prt, а третья на экземпляре класса Interf01.
Комментариев нет:
Отправить комментарий