When you write an object-oriented program—and we hope you’re going to write a lot of them—the classes and objects you create have relationships with each other. They work together to make your program do its thing.
Two aspects of OOP are most important when dealing with relationships between classes and objects. The first is inheritance, the subject of this chapter. When you create a new class, it’s often useful to define the new class in terms of its differences from another, already existing class. Using inheritance, you can define a class that has all the capabilities of a parent class: it inherits those capabilities.
The other OOP technique used with related classes is composition, in which objects contain references ...