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

Приведи пример применения принципа подстановки Барбары Лисков

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

Пример:

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

    public void setWidth(int width) {
        this.width = width;
    }
text
public void setHeight(int height) {
    this.height = height;
}

public int getArea() {
    return width * height;
}

}

class Square extends Rectangle {
@Override
public void setWidth(int width) {
this.width = width;
this.height = width;
}

text
@Override
public void setHeight(int height) {
    this.width = height;
    this.height = height;
}

}

text
**Проблема:** `Square` нарушает LSP, так как изменение ширины влияет на высоту, что неожиданно для кода, работающего с `Rectangle`.  
**Решение:** Не наследовать `Square` от `Rectangle`, а использовать общий интерфейс `Shape` с методом `getArea()`.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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