Java Reference
In-Depth Information
classes and superinterfaces of the class that would otherwise be accessible to code in the
class.
It is a compile-time error if a static method hides an instance method.
In this respect, hiding of methods differs from hiding of fields (§ 8.3 ), for it is per-
missible for a static variable to hide an instance variable. Hiding is also distinct from
shadowing (§ 6.4.1 ) and obscuring (§ 6.4.2 ).
A hidden method can be accessed by using a qualified name or by using a method invoca-
tion expression (§ 15.12 ) that contains the keyword super or a cast to a superclass type.
In this respect, hiding of methods is similar to hiding of fields.
Example 8.4.8.2-1. Invocation of Hidden Class Methods
A class ( static ) method that is hidden can be invoked by using a reference whose type
is the class that actually contains the declaration of the method. In this respect, hiding
of static methods is different from overriding of instance methods. The example:
Click here to view code image
class Super {
static String greeting() { return "Goodnight"; }
String name() { return "Richard"; }
}
class Sub extends Super {
static String greeting() { return "Hello"; }
String name() { return "Dick"; }
}
class Test {
public static void main(String[] args) {
Super s = new Sub();
System.out.println(s.greeting() + ", " + s.name());
}
}
produces the output:
Goodnight, Dick
because the invocation of greeting uses the type of s , namely Super , to figure out, at
compile time, which class method to invoke, whereas the invocation of name uses the
class of s , namely Sub , to figure out, at run time, which instance method to invoke.
Search WWH ::




Custom Search