Because the behavior of a child class is strictly larger than the behavior
of the parent, the child is an extension of the parent. (larger)
Because the child can override behavior to make it fit a specialized
situation, the child is a contraction of the parent. (smaller)
This interplay between inheritance and overriding, extension and contraction,
is what allows object-oriented systems to take very general tools and
specialize them for specific projects. This interplay is ultimately
the source of a great deal of the power of OOP.