...
| 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]\]. |
...
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
References
| 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