在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在外部类访问内部类的成员方面的不同规范。