: New and expanded coverage of these five principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion) to ensure code maintainability.
: Understanding when to reuse code through "is-a" relationships versus building complex objects through "has-a" relationships.
: Bundling data with methods and restricting direct access to object internals.
: Enabling different classes to be treated as a common type through shared interfaces.