Встречается на собеседованиях • сегодня

В чем разница между наследованием и композицией

Наследование — это отношение "is-a", где подкласс наследует поля и методы родительского класса. Композиция — это отношение "has-a", где класс содержит экземпляр другого класса.

Наследование:

java
class Animal {
    void eat() { System.out.println("Eating..."); }
}
class Dog extends Animal {} // Dog IS-A Animal

Композиция:

java
class Engine {
    void start() { System.out.println("Engine started"); }
}
class Car {
    private Engine engine; // Car HAS-A Engine
    Car() { this.engine = new Engine(); }
}

Ключевые отличия:

  1. Наследование создает жесткую связь, композиция — гибкую
  2. Композиция лучше для изменения поведения (можно подменить объект)
  3. Наследование нарушает инкапсуляцию (подкласс зависит от реализации родителя)
  4. В Java множественное наследование запрещено, а композицию можно использовать сколько угодно

Лучше предпочитать композицию наследованию, если нет явной иерархии "является".

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы