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

Что такое Liskov Substitution Principle

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

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

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

class Square extends Rectangle {
@Override
void setWidth(int w) {
super.setWidth(w);
super.setHeight(w); // Нарушение LSP - изменяет поведение
}

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

}

text

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

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

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

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