Polymorphism
We introduced polymorphism in Chapter 1. It is a fancy name describing a simple concept; different behaviors happen depending on which subclass is being used, without having to explicitly know what the subclass actually is. As an example, imagine a program that plays audio files. A media player might need to load an AudioFile
object and then play
it. We'd put a play()
method on the object, which is responsible for decompressing or extracting the audio and routing it to the sound card and speakers. The act of playing an AudioFile
could feasibly be as simple as:
audio_file.play()
However the process of decompressing and extracting an audio file is very different for different types of files. The .wav
files are stored uncompressed, while .mp3
, .wma
, and .ogg
files all have very different compression algorithms.
We can use inheritance with polymorphism to simplify the design. Each type of file can be represented by a different subclass of AudioFile
, for example, WavFile
, MP3File
. Each...