| 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
privatefield of a superclass might be accessible to a subclass (for example, if both classes are members of the same class). Nevertheless, aprivatefield 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();
}
}
|
...
| 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