Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

interface

Объявляет интерфейс — набор методов, которые обязуется реализовать класс.

Доступно с: Java 1.0

Синтаксис

interface Name { Type method(); default Type other() { … } }

Примеры

Интерфейс и две реализации:

interface Shape {
    double area();
}
 
class Circle implements Shape {
    double r;
    Circle(double r) { this.r = r; }
    public double area() { return Math.PI * r * r; }
}
 
class Square implements Shape {
    double side;
    Square(double side) { this.side = side; }
    public double area() { return side * side; }
}
 
void main() {
    List<Shape> shapes = List.of(new Circle(1), new Square(2));
    for (Shape s : shapes) {
        IO.println(Math.round(s.area() * 100) / 100.0);
    }
}

Результат:

3.14
4.0

Метод default с готовой реализацией и статический метод:

interface Greeter {
    String name();
 
    default String greet() {
        return "Hello, " + name() + "!";
    }
 
    static Greeter of(String name) {
        return () -> name;
    }
}
 
void main() {
    IO.println(Greeter.of("Anna").greet());
}

Результат:

Hello, Anna!

Примечания

Методы интерфейса по умолчанию public и abstract, поэтому в классе-реализации они объявляются с public. Класс может реализовать много интерфейсов, но унаследоваться только от одного класса. Интерфейс с одним абстрактным методом — функциональный: его можно реализовать лямбдой, как Greeter.of() выше.

См. также

  • implements — Указывает интерфейсы, которые реализует класс.
  • abstract — Помечает класс, объект которого создать нельзя, и метод без тела, который реализуют наследники.
  • sealed / permits — Ограничивает список классов, которым разрешено наследоваться от класса или реализовывать интерфейс.

В учебнике

  • Интерфейсы — Интерфейсы в Java: implements, несколько интерфейсов у одного класса, интерфейс как тип и методы по умолчанию.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.