可变访问私有类

时间:2013-09-30 08:27:41

标签: java

我今天早些时候遇到过这样的代码:

public class MyThing {
   ArrayList<String> myStrings = new ArrayList<String>();
   MyPrivateClass mpc = new MyPrivateClass();

   public void DoWork() {
      mpc.DoStuff();
   }

   class MyPrivateClass {
      void DoStuff() {
        myStrings.add("Test");
      }
   }
}

这是如何或为何有效? MyPrivateClass如何在不引用创建它的类的情况下访问myStrings的实例?

3 个答案:

答案 0 :(得分:4)

这被称为“内部类”,因为它是非static嵌套类。内部类具有(有限的)访问其包含实例see this Oracle example的详细信息。有关嵌套类here的一般类别的更多信息。

答案 1 :(得分:2)

你在谈论nested classes

A nested class is a member of its enclosing class. Non-static nested classes (inner classes)
have access to other members of the enclosing class, even if they are declared private.

答案 2 :(得分:0)

你的主要类是MyThing,然后你指定你可以在整个类MyTHing中使用的变量。由于您在父类中创建了一个类,因此内部类总是可以使用父类的值。