scala外部类访问内部类的私有成员

在java中,我们可以写如下代码:

public class Outer{
public class Inner{
   private int i=5;}
public int getint(){
return new Inner().i;}
}

public class Test{
public static void main    (string[] args){
Outer o = new Outer();
System.out.println(o.getint());
}

以上代码可以成功运行,说明java规范中是可以通过外部类访问内部类的私有成员的, 而Scala中是不是也可以通过外部类访问内部类的私有成员呢?在交互模式下,输入如下代码:

 class Outer{
     class Inner{
          private def f(){println("f")}
         class InnerMost{
             f()
         }
     }
     (new Inner).f()
     }

出现如下错误提示: <console>:18: error: method f in class Inner cannot be accessed in Outer.this.Inner (new Inner).f() 说明在scala中,不允许外部类访问内部类的私有成员。 这个实验说明了java和scala在外部类访问内部类的成员方面的不同规范。

猜你喜欢

转载自my.oschina.net/u/2963604/blog/1801994