外部类可以访问内部类的成员吗?

2022-09-01 21:40:35

内部类是在类中定义的类,内部类可以声明为公共的、私有的、受保护的。如果将内部类定义为私有且受保护,则外部类是否可以访问内部类的成员?内部类可以访问外部类的成员吗?


答案 1

如果将内部类定义为私有且受保护,则外部类是否可以访问内部类的成员?

是的。这些限定符只会影响从外部类派生的类中内部类的可见性。

内部类可以访问外部类的成员吗?

是的,包括声明的那些,就像任何实例方法一样。private


答案 2

通常,您可以(访问内部类上的私有字段,反之亦然)。以下代码在 Eclipse 下编译:

public class Outer {

  private int x;

  public void f() {
    Inner inner = new Inner();
    inner.g();
    inner.y = 5;
  }

  private class Inner {
    private int y;

    public void g() { x = 5; }
  }    
}

也就是说,您可以将 IDE/编译器配置为将对这些字段的访问视为错误(在 Eclipse 中,此设置称为“访问封闭类型的不可访问成员”,位于“首选项 -> Java -> 编译器 -> 错误/警告 ->代码样式”下)