Java Reference
In-Depth Information
3
The class of the object is found (following the “instance of” reference).
4 The implementation of the
display
method is found in the class and executed.
This is all very straightforward and not surprising.
Next, we look at method lookup with inheritance. This scenario is similar, but this time the
PhotoPost
class has a superclass
Post
and the
display
method is defined only in the superclass (Figure 9.6).
Figure 9.6
Method lookup
with inheritance
YGLVSOD\
Post
GLVSOD\
PhotoPost
instance of
3KRWR3RVWY
3KRWR3RVW
We execute the same statement. The method invocation then starts in a similar way: steps 1 to 3
from the previous scenario are executed again, but then it continues differently:
4No
display
method is found in class
PhotoPost
.
5
Because no matching method was found, the superclass is searched for a matching method.
If no method is found in the superclass, the next superclass (if it exists) is searched. This
continues all the way up the inheritance hierarchy to the
Object
class, until a method is
found. Note that at runtime a matching method should definitely be found, or else the class
would not have compiled.
6 In our example, the
display
method is found in class
Post
, and will be executed.
This scenario illustrates how objects inherit methods. Any method found in a superclass can be
invoked on a subclass object and will correctly be found and executed.
Next, we come to the most interesting scenario: method lookup with a polymorphic variable
and method overriding (Figure 9.7). The scenario is again similar to the one before, but there
are two changes:
■
The declared type of the variable
v1
is now
Post
, not
PhotoPost
.
■
The
display
method is defined in class
Post
and then redefined (overridden) in class
PhotoPost
.
Search WWH ::
Custom Search