| |
Inheritance
Object-oriented
systems take this a step further and allow classes
to be defined in terms of other classes. For
example, mountain bikes, racing bikes, and tandems
are all kinds of bicycles. In object-oriented
terminology, mountain bikes, racing bikes, and
tandems are all subclasses of the bicycle class.
Similarly, the bicycle class is the superclass
of mountain bikes, racing bikes, and tandems.
Each subclass inherits state (in the form of
variable declarations) from the superclass.
Mountain bikes, racing bikes, and tandems share
some states: cadence, speed, and the like. Also,
each subclass inherits methods from the superclass.
Mountain bikes, racing bikes, and tandems share
some behaviors: braking and changing pedaling
speed, for example.
However, subclasses are not limited to the state
and behaviors provided to them by their superclass.
Subclasses can add variables and methods to
the ones they inherit from the superclass. Tandem
bicycles have two seats and two sets of handle
bars; some mountain bikes have an extra set
of gears with a lower gear ratio.
Subclasses can also override inherited methods
and provide specialized implementations for
those methods. For example, if you had a mountain
bike with an extra set of gears, you would override
the "change gears" method so that
the rider could use those new gears.
You are not limited to just one layer of inheritance.
The inheritance tree, or class hierarchy , can
be as deep as needed. Methods and variables
are inherited down through the levels. In general,
the farther down in the hierarchy a class appears,
the more specialized its behavior.
The Object class is at the top of class hierarchy,
and each class is its descendant (directly or
indirectly). A variable of type Object can hold
a reference to any object, such as an instance
of a class or an array. Object provides behaviors
that are required of all objects running in
the Java Virtual Machine. For example, all classes
inherit Object's toString method, which returns
a string representation of the object.
Inheritance offers the following benefits:
• Subclasses provide specialized behaviors from
the basis of common elements provided by the
superclass. Through the use of inheritance,
programmers can reuse the code in the superclass
many times.
• Programmers can implement superclasses called
abstract classes that define "generic"
behaviors. The abstract superclass defines and
may partially implement the behavior, but much
of the class is undefined and unimplemented.
Other programmers fill in the details with specialized
subclasses.
. .
|
|