Wiki Markup |
---|
A nested class is any class whose declaration occurs within the body of another class or interface \[[JLS 05|AA. Java References#JLS 05]\]. Nested classes are a broad set of classes that are classified as {{static}} member and inner classes. ""An inner class is a nested class that is not explicitly or implicitly declared {{static}}."" \[[JLS 05|AA. Java References#JLS 05]\]. An inner class may be local, anonymous or non-static. |
...
Wiki Markup |
---|
Also, according to the Java Language Specification \[[JLS 05|AA. Java References#JLS 05]\], section 8.3 ""Field Declarations"": |
Note that a
private
field of a superclass might be accessible to a subclass (for example, if both classes are members of the same class). Nevertheless, aprivate
field is never inherited by a subclass.
...
Code Block | ||
---|---|---|
| ||
class Coordinates { private int x; private int y; public class Point { public void getPoint() { System.out.println("(""(" + x + ",""," + y + ")"")"); } } } class AnotherClass { public static void main(String[] args) { Coordinates c = new Coordinates(); Coordinates.Point p = c.new Point(); p.getPoint(); } } |
...
Code Block | ||
---|---|---|
| ||
class Coordinates { private int x; private int y; private class Point { private void getPoint() { System.out.println("(""(" + x + ",""," + y + ")"")"); } } } class AnotherClass { public static void main(String[] args) { Coordinates c = new Coordinates(); Coordinates.Point p = c.new Point(); // fails to compile p.getPoint(); } } |
...
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
References
Wiki Markup |
---|
\[[JLS 05|AA. Java References#JLS 05]\] [Section 8.1.3, Inner Classes and Enclosing Instances|http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.1.3] and 8.3 ""Field Declarations"" \[[McGraw 00|AA. Java References#McGraw 00]\] \[[Long 05|AA. Java References#Long 05]\] Section 2.3, Inner Classes \[[MITRE 09|AA. Java References#MITRE 09]\] [CWE ID 492|http://cwe.mitre.org/data/definitions/492.html] ""Use of Inner Class Containing Sensitive Data"" |
...
SCP01-J. Do not increase the accessibility of overridden or hidden methods 05. Scope (SCP) SCP03-J. Do not reuse names