Java 8 Default и Static методы
Данная статья написана командой Vertex Academy. Это одна из статей из нашего Учебника по Java 8. Надеемся, что данная статья Вам будет полезна. Приятного прочтения!
1. Введение
В Java 8 появилась возможность писать методы с реализацией в интерфейсах. Такие методы называются default и static. Особенности работы с ними мы сегодня и рассмотрим.
2. Default методы
Объявляются такие методы следующим образом
1 2 3 4 5 |
interface Human { default void walk() { System.out.println("Ну, я пошел..."); } } |
Использовать их можно только после получения экземпляра
1 |
Human.walk(); //ошибка, так делать нельзя |
1 2 |
Human human = new Human() {}; human.walk(); //а вот так можно |
Default методы так же можно переопределять как и обычные методы
1 2 3 4 5 6 |
class Runner implements Human{ @Override public void walk() { System.out.println("Я бегу"); } } |
Но есть один нюанс, рассмотрим следующий случай
1 2 3 4 5 6 7 8 9 10 11 |
interface Human { default void walk() { System.out.println("Ну, я пошел..."); } } interface Walkable { default void walk() { System.out.println("Ходьба"); } class Runner implements Human, Walkable { } |
В данном случае мы получим ошибку компиляции, ибо нельзя наследовать одновременно несколько default методов, не понятно какой из методов вызывать, если мы напишем следующий код
1 2 |
Runner runner = new Runner(); runner.walk(); |
3. Static методы
C ними все проще, чем с default методами. Static методы в интерфейсе работают точно так же как и static методы в классе.
Объявление
1 2 3 |
static void walk() { System.out.println("Ну, я пошел..."); } |
и вызов
1 |
Human.walk(); |
Наследовать static методы в интерфейсе нельзя, как и static методы в классах.
Так же нельзя вызывать static метод интерфейса из класса наследника
1 2 3 4 5 6 7 8 9 10 11 12 |
public static void main(String[] args) { HomoSapiens.walk(); //ошибка компиляции } interface Human { static void walk() { System.out.println("Ну, я пошел..."); } } class HomoSapiens implements Human{ } |
В Java 8 есть еще множество полезных нововведений, которые можно найти тут
Есть возможность записаться на наши курсы по Java. Детальную информацию смотрите у нас на сайте.