【问题标题】:Regarding inner classes private member variable access关于内部类私有成员变量访问
【发布时间】:2013-02-14 01:47:22
【问题描述】:

假设有一个名为MyOuter 的类,它由一个名为MyInner 的简单内部类组成。在尝试了解内部类如何工作时,我试图了解外部类私有成员变量是否可以从内部类本身访问。

class MyOuter {
  private int x = 7;
  // inner class definition
  class MyInner {
    public void seeOuter() {
      System.out.println("Outer x is " + x);
    }
  } // close inner class definition
} // close outer class

根据我的分析,前面的代码是完全合法的。请注意,内部类确实在访问外部类的私有成员。没关系,因为内 类也是外部类的成员。所以就像外部类的任何成员一样 (例如,一个实例方法)可以访问外部类的任何其他成员,私有 与否,内部类(也是成员)也可以这样做。

请告知我的理由是否正确。

【问题讨论】:

  • 正确,但您可以询问您的编译器。

标签: java private-members


【解决方案1】:

内部类是其封闭类的成员,并且可以直接访问该对象的方法和字段。更多信息请见Nested Classes。

【讨论】:

  • 这不是同样的OP也提到了......“内部类也是外部类的成员。所以就像外部类的任何成员一样(例如,实例方法)可以访问外部类的任何其他成员,无论是否私有,内部类——也是一个成员——可以做同样的事情”
  • @Jayamohan,对,这只是我说的是的,他是对的。然后我提供了一些参考资料。我看不出这里有什么问题?另外,否决选民愿意解释吗?
  • 是的,如果回复中包含“是”,那就太好了,这就是为什么评论。
  • 访问,严格来说,不是直接的。至少,除非 JIT 编译器对其进行优化,否则不会。相反,包私有访问器在编译时在封闭类中合成。内部类使用这些访问器,而不是直接访问字段。
猜你喜欢
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多