Chapter 5. Inheritance and Polymorphism
The
previous chapter demonstrates how to create new types by declaring
classes. The current chapter explores the relationship among objects
in the real world and how to model these relationships in your code.
This chapter focuses on specialization
, which is
implemented in C# through inheritance
. This
chapter also explains how instances of more specialized classes can
be treated as if they were instances of more general classes, a
process known as polymorphism
. This chapter ends
with a consideration of
sealed
classes, which cannot be specialized,
as well as abstract
classes, which exist only to be
specialized, and a discussion of the root of all classes, the class
Object
.
Specialization and Generalization
Classes and their instances (objects) do not exist in a vacuum but rather in a network of interdependencies and relationships, just as we, as social animals, live in a world of relationships and categories.
The is-a
relationship is one of
specialization
. When we say that a Dog is-a
mammal, we mean that the dog is a specialized kind of
mammal. It has all the characteristics of any mammal (it bears live
young, nurses with milk, has hair), but it specializes these
characteristics to the familiar characteristics of canine
domesticus. A Cat is also a mammal. As such we expect it
to share certain characteristics with the dog that are generalized in
Mammal, but to differ in those characteristics that are specialized
in Cat.
The specialization ...
Get Programming C#, Second Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.