Какие ключевые слова и конструкции Java отвечают за наследование и реализацию интерфейсов?

«Какие ключевые слова и конструкции Java отвечают за наследование и реализацию интерфейсов?» — вопрос из категории ООП, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java механизмы наследования и реализации строго разделены.

1. Наследование классов (одиночное)

Используется ключевое слово extends. Класс-потомок наследует поля и методы (кроме private) родительского класса.

class Vehicle {
    void move() { System.out.println("Moving..."); }
}

class Car extends Vehicle { // Car наследует Vehicle
    void honk() { System.out.println("Beep!"); }
}
// Использование:
Car myCar = new Car();
myCar.move(); // Унаследованный метод
myCar.honk(); // Собственный метод

2. Реализация интерфейсов

Используется ключевое слово implements. Класс может реализовать несколько интерфейсов, обеспечивая полиморфизм.

interface Drawable {
    void draw(); // Неявно public abstract
}
interface Resizable {
    void resize(double factor);
}

class Circle implements Drawable, Resizable { // Реализация двух интерфейсов
    @Override
    public void draw() { System.out.println("Drawing a circle"); }
    @Override
    public void resize(double factor) { System.out.println("Resizing by " + factor); }
}

3. Ключевая аннотация @Override

Указывает, что метод переопределяет метод суперкласса или реализует абстрактный метод интерфейса. Это повышает читаемость и позволяет компилятору проверить сигнатуру метода.

@Override
public String toString() {
    return "Custom object representation";
}