- **Abstraction** - hiding certain properties and methods from the outside; benefits are: 1. benefits: a simpler interface and 2. reducing the impact of change - **Polymorphism** - poly (many); morph (form); benefits are: - helps to avoid long if/else / switch case - **Inheritance** - eliminates redundancy (keeps the code DRY) - **Encapsulation** - grouping variables (properties) and the functions (methods) that operate on them together 1. reduces complexity and 2. increases reusability ___ **Tags**: #oop