1. Encapsulation
Bundling data and methods together; restricting access with PRIVATE/PUBLIC modifiers; hiding implementation details behind a public interface.
2. Inheritance
A subclass (derived class) inherits all public attributes and methods of a superclass (base class). Promotes code reuse. Subclass can add new members or override inherited methods. (Covered in 4.1.3)
3. Polymorphism
Same method name, different behaviour depending on the object. A superclass reference can call overridden methods in different subclasses at runtime. (Covered in 4.1.3)
4. Abstraction
Hiding complex implementation details and exposing only the essential interface the user needs. The user of a class doesn't need to know HOW it works — only what it does.