In This Chapter
Defining one class in terms of another, more fundamental class
Differentiating between is a and has a
Substituting one class object for another
Constructing static or instance members
Including constructors in an inheritance hierarchy
Invoking the base class constructor specifically
Object-oriented programming is based on four principles: the ability to control access (encapsulation), inherit from other classes, respond appropriately (polymorphism), and refer from one object to another indirectly (interfaces).
Inheritance is a common concept. I am a human, except when I first wake up. I inherit certain properties from the class
Human, such as my ability to converse, more or less, and my dependence on air, food, and carbohydrate-based beverages with lots of caffeine. The class
Human inherits its dependencies on air, water, and nourishment from the class
Mammal, which inherits from the class
The ability to pass down properties is a powerful one. You can use it to describe items in an economical way. For example, if my son asks, "What's a duck?" I can say, "It's a bird that quacks." Despite what you may think, that answer conveys a considerable amount of information. My son knows what a bird is, and now he knows all those same characteristics about a duck plus the duck's additional property of "quackness."
Object-oriented languages express this inheritance relationship by allowing one class to inherit properties from another. ...