Verified Jobs Live
Software Engineering & OOP Medium Level ~3 min read

What is the Liskov substitution principle, and why can a square-as-rectangle hierarchy violate it?

Interactive Practice Mode
Formulate your thoughts or take notes before revealing the model solution.
Model Answer & Deep-Dive Explanation

A subtype must be usable wherever its parent is expected without breaking the parent’s behavioral contract. If a mutable rectangle promises independently settable width and height, a square that changes both when either is set violates that expectation. Code that sets width to 5 and height to 4 expects area 20, but receives a different result. The mathematical relationship does not automatically justify a mutable object hierarchy. An immutable shape abstraction exposing area, or separate rectangle and square types, can avoid the conflicting contract.