Liskov Substitution Principle
"A type hierarchy is composed of subtypes and super types. The intuitive idea of a subtype is one whose objects provide all the behavior of objects of another type (the super type) plus something extra. What is wanted here is something like the following substitution property: If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is substituted for o2, then S is a subtype of T."
– Barbara Liskov, Data Abstraction and Hierarchy
If you don't understand this, don't worry. Neither do we! Instead, let's look at it from a less academic, mere mortal point of view.
In simple terms, the Liskov Substitution Principle (LSP) says that derived classes should keep promises made by base classes. This also applies to interfaces, and it means that classes that implement some interface should keep the promises made by that interface...