Definition
Liskov Substitution Principle
Subtypes must be substitutable for their base types, meaning that objects of a superclass should be replaceable with objects of its subclasses without the need for the client to be aware of the difference.