The Liskov Substitution Principle (LSP): Subclasses should be substitutable for their base classes.

This has extensive implications in Design by Contract.
Restated: "The contract of the base class must be honored by the subclass."


Barbara H. Liskov and Stephen N. Zilles, Programming with Abstract Data Types, Computation Structures Group, Memo No 99, MIT, Project MAC, Cambridge Mass, 1974. (See also SIGPLAN notices, 9, 4, pp. 50-59, Apr 1974.)
Robert C. Martin, Engineering Notebook, C++ Report, March, 1996.
Robert C. Martin, Engineering Notebook, C++ Report, Nov-Dec, 1996.