外类如何能够直接访问内部成员类

时间:2016-01-05 03:52:15

标签: java inner-classes

当我们定义内部类时,我理解使用外部类访问static内部类,并且使用外部类的实例存在内部成员类。

令人困惑的是,如果我想持有non-private内部成员类的实例,那么变量声明就像:

OuterClass.InnerClass innerObject = outerObject.new InnerClass();

外部类如何能像这样引用内部成员类?这里发生了什么?

示例代码:

public class NestedClasses {
  public static void main(String[] args) {
    A.B b = new A().new B();   // <- How A is directly accessing B, B is not defined as static.
    A.StaticClass staticClass = new A.StaticClass();
  }
}

class A {
  static int x;
  int y;

  A() {
    System.out.println(this.getClass().getName());
  }
  static class StaticClass {
    StaticClass() {
      System.out.println(this.getClass().getName());
    }
  }
  class B {
    B() {
      System.out.println(this.getClass().getName());
    }
  }
}

0 个答案:

没有答案