Встречается на собеседованиях • сегодня
Может ли наследник служить заменой своему классу-родителю
Да, если соблюдается принцип подстановки Барбары Лисков (LSP). Наследник должен корректно работать в любом контексте, где используется родительский класс, не нарушая его контракта.
Пример:
java
class Bird {
void fly() {
System.out.println("Flying");
}
}
class Penguin extends Bird {
@Override
void fly() {
throw new UnsupportedOperationException("Penguins can't fly");
}
}
text
Здесь Penguin нарушает LSP, так как клиентский код, ожидающий летающую птицу, сломается. Правильная реализация - не наследовать Penguin от Bird, если летание критично.
Наследование стоит использовать только при истинном отношении "is-a", когда подкласс действительно является специализацией родителя.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы