Определенная ошибка ООП показана с классом Square, унаследованным от Rectangle, где логически Square является специализацией Rectangle и поэтому должен наследовать от него, но все рушится, когда вы пытаетесь изменить длину или ширину Square.
Есть ли конкретный термин для описания того, что происходит с этим случаем?
Ответы:
Википедия просто называет это проблемой кругового эллипса
источник
Я бы посчитал это нарушением принципа подстановки Лискова -
Square
подкласс специально нарушает инвариант, что длина и ширина независимы.источник
На более фундаментальном уровне, чем принцип подстановки Лискова, это ошибка категории или ошибка категории
В контексте моделирования поведения квадрат просто не является типом прямоугольника.
Когда вы понимаете это, проблема испаряется, так как исходное предположение (квадрат является типом прямоугольника) удаляется из игры.
Проблема с этим ответом состоит в том, что начиная со школьной скамьи каждый, кто занимается геометрией, считает, что квадрат - это тип прямоугольника. Но очень важно понимать, что это верно только в очень специфическом контексте (классификация геометрических фигур на основе свойств их внутренних углов). С точки зрения поведения квадрат не является прямоугольником. Рассматривать один набор классификации в неправильном контексте - ошибка категории.
источник