繁体   English   中英

可变访问私人班级

[英]Variable access to private class

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

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实例而不引用创建它的类?

之所以称为“内部类”,是因为它是一个非static嵌套类。 内部类具有(有限)对其包含实例的访问权限,有关详细信息, 请参见此Oracle示例 更多关于嵌套类的普通类在这里

你在说嵌套类

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.

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM