Что такое наследование в ООП?

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

Ответ

Наследование — это механизм объектно-ориентированного программирования, который позволяет одному классу (дочернему, подклассу) наследовать структуру (поля) и поведение (методы) другого класса (родительского, суперкласса). Это способствует повторному использованию кода и созданию иерархии "is-a" (является).

Ключевые принципы в Java:

  • Ключевое слово extends: Класс-наследник объявляется с помощью extends.
  • Наследование членов: Подкласс наследует все не-private поля и методы суперкласса.
  • Переопределение методов (Override): Подкласс может предоставить свою собственную реализацию унаследованного метода, используя аннотацию @Override.
  • Одиночное наследование: Класс в Java может наследоваться только от одного прямого суперкласса.
  • Конструкторы: Конструкторы не наследуются, но дочерний конструктор должен вызывать конструктор родителя (явно через super(...) или неявно, если есть конструктор по умолчанию).

Пример:

// Родительский класс (суперкласс)
class Vehicle {
    protected String brand; // protected даёт доступ подклассам

    public Vehicle(String brand) {
        this.brand = brand;
    }

    public void honk() {
        System.out.println("Beep beep!");
    }
}

// Дочерний класс (подкласс)
class Car extends Vehicle {
    private int numberOfDoors;

    public Car(String brand, int doors) {
        super(brand); // Вызов конструктора родительского класса
        this.numberOfDoors = doors;
    }

    @Override // Переопределение метода
    public void honk() {
        System.out.println(brand + " car honks: Honk honk!");
    }

    public void displayInfo() {
        System.out.println("Brand: " + brand + ", Doors: " + numberOfDoors);
    }
}

// Использование
Car myCar = new Car("Toyota", 4);
myCar.honk();       // Вывод: Toyota car honks: Honk honk!
myCar.displayInfo();// Вывод: Brand: Toyota, Doors: 4