...
Code Block |
---|
|
class GrantAccess {
public static void displayAccountStatus() {
System.out.print(""Account details for admin: XX"");
}
}
class GrantUserAccess extends GrantAccess {
public static void displayAccountStatus() {
System.out.print(""Account details for user: XX"");
}
}
public class StatMethod {
public static void choose(String username) {
GrantAccess admin = new GrantAccess();
GrantAccess user = new GrantUserAccess();
if(username.equals("admin""admin")) {
admin.displayAccountStatus();
} else {
user.displayAccountStatus();
}
}
public static void main(String[] args) {
choose("user""user");
}
}
|
Compliant Solution
This compliant solution correctly classifies this case as hiding and uses absolute, fully qualified class names GrantAccess
and GrantUserAccess
to clearly state the intent. Refrain from qualifying a static
method invocation with an expression meant for dynamic dispatch.
Code Block |
---|
|
class GrantAccess {
public static void displayAccountStatus() {
System.out.print(""Account details for admin: XX"");
}
}
class GrantUserAccess extends GrantAccess {
public static void displayAccountStatus() {
System.out.print(""Account details for user: XX"");
}
}
public class StatMethod {
public static void choose(String username) {
if(username.equals("admin""admin")) {
GrantAccess.displayAccountStatus();
} else {
GrantUserAccess.displayAccountStatus();
}
}
public static void main(String[] args) {
choose("user""user");
}
}
|
Wiki Markup |
---|
Note that ""In a subclass, you can overload the methods inherited from the superclass. Such overloaded methods neither hide nor override the superclass methodsâthey are new methods, unique to the subclass."" \[[Tutorials 08|AA. Java References#Tutorials 08]\]. |
...
Wiki Markup |
---|
\[[Tutorials 08|AA. Java References#Tutorials 08]\] [Overriding and Hiding Methods|http://java.sun.com/docs/books/tutorial/java/IandI/override.html]
\[[Bloch 05|AA. Java References#Bloch 05]\] Puzzle 48: All I Get Is Static
\[[JLS 05|AA. Java References#JLS 05]\] 8.4.6.3 Requirements in Overriding and Hiding |
...
12. Methods (MET) 12. Methods (MET) MET01-J. Follow good design principles while defining methods