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

11 java class inner-classes

内部类是在类中定义的类,内部类可以声明为public,private,protected.如果内部类定义为private和protected,外层类可以访问内部类的成员吗?并且内部类可以访问外部类的成员吗?

Ita*_*man 24

通常,您可以(访问内部类的私有字段,反之亦然).以下代码在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; }
  }    
}
Run Code Online (Sandbox Code Playgroud)

也就是说,您可以配置IDE /编译器来处理对错误等字段的访问(在Eclipse中,此设置称为"访问封闭类型的不可访问成员",在Preferences - > Java - > Compiler - > Error /下)警告 - >代码风格)


Abd*_*ahC 20

如果内部类定义为private和protected,外层类可以访问内部类的成员吗?

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

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

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