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.
Saved automatically
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.
Related Questions in Software Engineering & OOP
Explain the SOLID Principles of Object-Oriented Software Engineering with Examples
Intermediate level • 623 views
Explain ACID properties in relational databases and how different Transaction Isolation Levels prevent concurrency anomalies.
Intermediate level • 152 views
A notification class has growing email, SMS, and push conditionals. How would you refactor it?
Medium level • 6 views
How does encapsulation protect an object’s rules? Explain using a bank account.
Easy level • 5 views
How do abstraction and inheritance solve different problems?
Easy level • 5 views