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.
I have been a selfish being all my life, in practice, though not in principle.