E.Liskov's Substitution Principle(LSP)
Summary
Subclass(derived class) must be behaviorally equal to their base types.
This principle is just an extension of the Open Close Principle and it means that we must make sure that new derived classes are extending the base classes without changing their behavior.
Any overriding violates this principle to avoid overriding as long as you can.
It recommend to prefer Delegation over Inheritance if you do not need to modify the behavior of other class.
It recommend to prefer Composition over Aggregation
Prefer Property Map instead of inheritance
Inheritance should be last option for extension
This is very important principle that if applied correctly then eliminate lot of problems so apply it very carefully.
Applicability
Class design.
References