Design your own types: define classes, build objects with constructors, protect their data, and extend them with inheritance and interfaces
Define your own classes, create objects from them with constructors, keep their data safe with encapsulation, and choose between instance and static members
Build new classes on top of existing ones with extends, replace parent behavior with virtual and override, and write code that works with many types at once
Handle errors with try and catch, learn the most common built-in exception types, build your own custom exceptions, and clean up safely with finally