But the benefits of objects do not
stop there.
Objects also have the special
ability to inherit functionality from other objects.
Let's look at the standard cat
metaphor that most books use:
A cat is certainly a cat. Since it
is a cat, we know that it has properties including whiskers,
retractable claws and sharp teeth. We also know that it has
methods including the fact that it purrs when it is happy, it
hunts mice, and it rips up the sofa when it is sharpening its
claws.
But a cat is more than a cat. It is
also a mammal. As a mammal, it inherits certain attributes
shared by all mammals. For example, it has mammary glands,
it is warm-blooded, it gestates its young internally, it
breathes, it maintains homeostasis, etc....
Okay, now let's consider a more
realistic object that you might use in your code and see how
the same logic applies. Consider the HTML FORM Text Field
and Password Field objects from Day One that are shown
below.
As we noted earlier, the password
object is exactly the same as a Text Field object except for
the fact that it does not echo what the user types in.
So the password field is like the
cat and the text filed is like the mammal. The password field
inherits all of the functionality of the text field but it
adds another feature that makes it distinct.
In the case of the password object,
we simply say that a password object "is a" text field with
the added feature that it echoes stars instead of what the
user types in.
Well, with inheritance, if you find
that someone has already developed an object that is
"mostly" what you need, you can easily add new features
without breaking the old ones, or even having to understand
how the old ones work.
Thus, we do not need to rewrite the
entire functionality of a Text Field in order to create a
password object, you just inherit.