Introduction to OOP: Chapter 12: Implications of Inheritance
Idealization of is-a Relationship
A TextWindow is-a Window
Because TextWindow is subclassed from Window, all behavior
associated with Windows is also manifest by instances of TextWindow.
Therefore, a variable declared as maintaining an instance of Window
should be able to hold a value of type TextWindow.
Unfortunately, practical programming language implementation issues complicate
this idealized picture.