Liskov substitution principle

Principle

Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.
Books