Chapter 6. abstract classes and interfaces: Serious Polymorphism
A superclass inheritance hierarchy is just the beginning.
If you want to fully exploit polymorphism , you need to design using abstract classes and interfaces. In this chapter, you’ll discover how to use abstract classes to control which classes in your hierarchy can and can’t be instantiated . You’ll see how they can force concrete subclasses to provide their own implementations . You’ll find out how to use interfaces to share behavior between independent classes . And along the way, you’ll learn the ins and outs of is , as, and when .
The Animal class hierarchy revisited
In the previous chapter, you learned how to design an inheritance hierarchy by creating the class structure for a bunch of animals. We abstracted out the common properties and functions into an Animal superclass, and overrode some of the properties and functions in the Animal subclasses so that we’d have subclass-specific implementations where we thought it was appropriate.
By defining the common properties and functions in the Animal superclass, we’re establishing a common protocol for all Animals, which makes the design nice and flexible. We can write code using Animal variables and parameters so that any Animal subtype (including ones we didn’t know about at the time we wrote our code) can be used at runtime.
Here’s a reminder of the class ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access