junior
Что такое наследование?
Наследование — свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью.
Класс-источник называется предком (базовым, родительским), новый класс — потомком (наследником, производным).
Аналогия: новый модельный ряд автомобилей не проектируется с нуля — берётся предыдущая модель, и дорабатывается. Общие свойства наследуются, каждая модификация добавляет своё.
Пример
Иерархия: AbstractPhone → WirelessPhone → CellPhone → Smartphone.
Пример
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 содержит минимум нового кода, но получает всю функциональность родительских классов. Наследование сокращает дублирование и упрощает расширение.