Dive deeper into the pillars of Object-Oriented Programming: inheritance, polymorphism, abstraction, and encapsulation.
Reuse code and create class hierarchies by allowing a class to inherit fields and methods from another.
Understand how objects can take on many forms and how subclasses can provide their own method implementations.
Hide implementation details using abstract classes and define contracts with interfaces.
Use enumerated types for a fixed set of constants.