LSP vs OCP / Liskov Substitution VS Open Close
- by Kolyunya
I am trying to understand the SOLID principles of OOP and I've come to the conclusion that LSP and OCP have some similarities (if not to say more).
the open/closed principle states "software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification".
LSP in simple words states that any instance of Foo can be replaced with any instance of Bar which is derived from Foo and the program will work the same very way.
I'm not a pro OOP programmer, but it seems to me that LSP is only possible if Bar, derived from Foo does not change anything in it but only extends it. That means that in particular program LSP is true only when OCP is true and OCP is true only if LSP is true. That means that they are equal.
Correct me if I'm wrong. I really want to understand these ideas.
Great thanks for an answer.