Some object-oriented design rules
Favor Composition over Inheritance, priority use (object) combination, not (class) inherited Program to an interface, Not an IMplement, for interface programming, not (interface) implements Software Entities Should Be Open for Extension, YET CLOSED For Modification , Open-Closed Rules (OCP) Function Thar Use Reference (SUPER) CLASSES MUST Be Aable To Use Objects of Derived (SUB) Classes WITHOUT KNOWING IT, LISKOV Replacement (LSP)