Violations of the Liskov Substitution principle make your code behavior unexpected, therefore hard predictable & bad maintainable...
Liskov Substitution Principle
Subtypes must be behaviorally substitutable for their base types - official formulation
That is, if
Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program. - general form
It means that we must ensure that new derived classes extend the base classes without changing ancestor's behavior.
Child classes should never break the parent class’ type definitions - simplified interpretation
Otherwords, Subclass should override the parent class’ methods in a way that does not break functionality from a client’s point of view.
That is, if
S
is a subtype of T
, then objects of type T
in a program P
may be replaced with objects of type S
without altering any of the desirable properties(correctness) of that program P
.Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program. - general form
It means that we must ensure that new derived classes extend the base classes without changing ancestor's behavior.
Child classes should never break the parent class’ type definitions - simplified interpretation
Otherwords, Subclass should override the parent class’ methods in a way that does not break functionality from a client’s point of view.
No comments:
Post a Comment