The Liskov Substitution Principle (LSP) states that objects of a subtype must be substitutable for their base type without breaking the program's correctness. If code works with a Base, it must work with any Subclass — same behavioral expectations, no surprises.
