Вопрос проверяет понимание одного из ключевых принципов ООП и умение корректно применять его при проектировании классов.
Наследование — это механизм, позволяющий одному классу перенимать поведение и свойства другого. В Java оно используется через ключевое слово extends. Наследование помогает переиспользовать код и строить иерархии классов. Однако его стоит применять аккуратно, чтобы не усложнять архитектуру.
Наследование является базовым инструментом объектно-ориентированного программирования, но при неправильном использовании может привести к проблемам.
Определение:
Наследование — это принцип ООП, при котором один класс (потомок) получает поля и методы другого класса (родителя).
Потомок:
может использовать реализацию родителя
может переопределять методы
может добавлять собственное поведение
public class Animal {
public void speak() {
System.out.println("Sound");
}
}
public class Dog extends Animal {
@Override
public void speak() {
System.out.println("Bark");
}
}
Наследование стоит использовать, если:
существует отношение «является» (is-a)
поведение родителя логически подходит потомку
предполагается полиморфизм
Наследование нежелательно, если:
классы связаны только частично
требуется гибкость поведения
иерархия быстро разрастается
В таких случаях чаще применяют композицию.
Наследование подходит для построения устойчивых иерархий с чётким отношением «is-a». Для гибкости и расширяемости чаще выбирают композицию.