The Liskov Substitution Principle is a fundamental concept in object-oriented programming, stating that objects of a superclass should be replaceable with objects of a subclass without affecting the correctness of the program.
The only freedom which deserves the name is that of pursuing our own good in our way, so long as we do not attempt to deprive others of theirs or impede their efforts to obtain it.