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

Как нарушить принцип Лисков

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

Пример:

java
class Rectangle {
    protected int width;
    protected int height;

    public void setWidth(int width) { this.width = width; }
    public void setHeight(int height) { this.height = height; }
    public int area() { return width * height; }
}

class Square extends Rectangle {
@Override
public void setWidth(int width) {
super.setWidth(width);
super.setHeight(width); // Нарушение LSP!
}

text
@Override
public void setHeight(int height) {
    super.setHeight(height);
    super.setWidth(height); // Нарушение LSP!
}

}

text
Здесь `Square` нарушает контракт `Rectangle`, где ширина и высота изменяются независимо. Код, ожидающий `Rectangle`, сломается при работе с `Square`, так как изменение одного измерения повлияет на другое. Правильное решение - не наследовать `Square` от `Rectangle`, а использовать композицию или общий интерфейс.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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