[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-oop-chto-takoe-nasledovanie":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},4,"chto-takoe-nasledovanie",1,"oop","ООП","🔷","Что такое наследование?","**Наследование** — свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью.\n\nКласс-источник называется *предком* (*базовым*, *родительским*), новый класс — *потомком* (*наследником*, *производным*).\n\n> Аналогия: новый модельный ряд автомобилей не проектируется с нуля — берётся предыдущая модель, и дорабатывается. Общие свойства наследуются, каждая модификация добавляет своё.\n\n### Пример\n\nИерархия: `AbstractPhone` → `WirelessPhone` → `CellPhone` → `Smartphone`.\n\n```java\npublic abstract class WirelessPhone extends AbstractPhone {\n\n    private int hour;\n\n    public WirelessPhone(int year, int hour) {\n        super(year);\n        this.hour = hour;\n    }\n}\n```\n\n```java\npublic class CellPhone extends WirelessPhone {\n\n    public CellPhone(int year, int hour) {\n        super(year, hour);\n    }\n\n    @Override\n    public void call(int outputNumber) {\n        System.out.println(\"Вызываю номер \" + outputNumber);\n    }\n\n    @Override\n    public void ring(int inputNumber) {\n        System.out.println(\"Вам звонит абонент \" + inputNumber);\n    }\n}\n```\n\n```java\npublic class Smartphone extends CellPhone {\n\n    private String operationSystem;\n\n    public Smartphone(int year, int hour, String operationSystem) {\n        super(year, hour);\n        this.operationSystem = operationSystem;\n    }\n\n    public void install(String program) {\n        System.out.println(\"Устанавливаю \" + program + \" для \" + operationSystem);\n    }\n}\n```\n\nКласс `Smartphone` содержит минимум нового кода, но получает всю функциональность родительских классов. Наследование сокращает дублирование и упрощает расширение.","","junior",[15,7,16],"наследование","extends",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":29,"featuredSnippetReady":30},"Что такое наследование в Java — иерархия классов с примером — Gymterview","Наследование — создание нового класса на основе существующего с заимствованием функциональности. Пример иерархии телефонов в Java.","Наследование в Java — определение и пример иерархии","Наследование позволяет описать новый класс на основе существующего. Пример: AbstractPhone → WirelessPhone → CellPhone → Smartphone.",[25,26,27,28],"наследование Java","что такое наследование ООП","extends Java","наследование классов пример","Наследование — свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью.",true]