Рассмотрим пример создания класса смартфон с помощью наследования.
Все беспроводные телефоны работают от аккумуляторных батарей, которые имеют определенный ресурс работы в часах. Поэтому добавим это свойство в класс беспроводных телефонов:
public abstract class WirelessPhone extends AbstractPhone { private int hour; public WirelessPhone(int year, int hour) { super(year); this.hour = hour; } }
Сотовые телефоны наследуют свойства беспроводного телефона, мы также добавили в этот класс реализацию методов call
и ring
:
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
мы создали совсем немного нового кода, но получили новый класс с новой функциональностью. Использование принципа наследование ООП позволяет значительно уменьшить объем кода, а значит, и облегчить работу программисту.