Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Edited by sciSpider Java v3.0

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, a private field is never inherited by a subclass.

...

Code Block
bgColor#FFcccc
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
bgColor#ccccff
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