Inheritance captures the idea that certain classes of objects are
related to each other in useful ways. For example, lists
and sorted lists have quite similar behavior -- they both
allow the user to insert, delete, and find elements that are
on the list. There are two benefits to using inheritance:
- You can write generic code that doesn't
care exactly which kind of object it is manipulating. For
example, inheritance is widely used in windowing systems.
Everything on the screen (windows, scroll bars, titles, icons)
is its own object, but they all share a set of member functions
in common, such as a routine Repaint to redraw the object
onto the screen. This way, the code to repaint the entire screen
can simply call the Repaint function on every object on the screen.
The code that calls Repaint doesn't need to know which
kinds of objects are on the screen, as long as each implements
Repaint.
- You can share pieces of an implementation between two
objects. For example, if you were to implement both lists and
sorted lists in C, you'd probably find yourself repeating code
in both places -- in fact, you might be really tempted to
only implement sorted lists, so that you only had to debug
one version. Inheritance provides a way to re-use code
between nearly similar classes. For example, given an implementation
of a list class, in C++ you can implement sorted lists by replacing
the insert member function -- the other functions, delete, isFull,
print, all remain the same.