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

Насколько легко соблюдать принцип подстановки Барбары Лисков

Принцип подстановки Лисков (LSP) гласит, что подклассы должны быть взаимозаменяемы с родительскими классами без нарушения логики программы. Соблюдать его не всегда просто, особенно при сложных иерархиях.

Сложности:

  • Нарушение контракта: например, подкласс изменяет поведение родителя (бросает исключения, возвращает null вместо ожидаемого значения).
  • Жесткие иерархии: наследование "для переиспользования кода" без учета семантики.

Пример нарушения LSP:

java
class Rectangle {
    protected int width, height;
    void setWidth(int w) { width = w; }
    void setHeight(int h) { height = h; }
}

class Square extends Rectangle {
    @Override void setWidth(int w) { 
        width = height = w; // Нарушение LSP!
    }
}

Здесь Square не может заменить Rectangle, так как изменяет его поведение.

Как соблюдать:

  1. Использовать композицию вместо наследования, если семантика отличается.
  2. Четко определять контракты (инварианты, постусловия).
  3. Избегать переопределения методов, меняющих логику родителя.

LSP требует тщательного проектирования, но соблюдение упрощает поддержку и расширение кода.

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

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

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

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