
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
Implementing Polymorphism with Abstract Base Classes
|
103
The output of these methods is shown here:
Magnetic Init
Magnetic Write
Magnetic Read
0
Magnetic Close
Magnetic
Optical Init
Optical Write
Optical Read
0
Optical Close
Optical
PunchCard Init
PunchCard Write
PunchCard Read
0
PunchCard Close
PunchCard
Discussion
Polymorphism through an abstract base class is a powerful tool. With this tool, you
are able to create a method (
UseMedia in this solution) that accepts a parameter with
a specific type that is known only at runtime. Since the use of this parameter is simi-
lar for all objects that can be passed in to this method, you do not have to worry
about the specific class that is passed in; you need to know only how the abstract
base class is defined. It is through this abstract base class definition that you know
how to use the specific type.
x = new Optical( );
UseMedia(x);
Console.WriteLine( );
x = new PunchCard( );
UseMedia(x);
}
private static void UseMedia(Media media)
{
media.Init( );
media.WriteTo("text");
media.ReadFrom( );
Console.WriteLine(media.Handle);
media.Close( );
Console.WriteLine(media.ToString( ));
}
Example 3-3. Using derived classes polymorphically (continued)