Gymterview
junior

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

Наследование — свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью.

Класс-источник называется предком (базовым, родительским), новый класс — потомком (наследником, производным).

Аналогия: новый модельный ряд автомобилей не проектируется с нуля — берётся предыдущая модель, и дорабатывается. Общие свойства наследуются, каждая модификация добавляет своё.

Пример

Иерархия: AbstractPhoneWirelessPhoneCellPhoneSmartphone.

Пример
public abstract class WirelessPhone extends AbstractPhone {

    private int hour;

    public WirelessPhone(int year, int hour) {
        super(year);
        this.hour = hour;
    }
}
Пример
public class CellPhone extends WirelessPhone {

    public CellPhone(int year, int hour) {
        super(year, hour);
    }

    @Override
    public void call(int outputNumber) {
        System.out.println("Вызываю номер " + outputNumber);
    }

    @Override
    public void ring(int inputNumber) {
        System.out.println("Вам звонит абонент " + inputNumber);
    }
}
Пример
public class Smartphone extends CellPhone {

    private String operationSystem;

    public Smartphone(int year, int hour, String operationSystem) {
        super(year, hour);
        this.operationSystem = operationSystem;
    }

    public void install(String program) {
        System.out.println("Устанавливаю " + program + " для " + operationSystem);
    }
}

Класс Smartphone содержит минимум нового кода, но получает всю функциональность родительских классов. Наследование сокращает дублирование и упрощает расширение.