值得注意的是:

内部类可以访问外部类的所有成员,即使是private[this]的私有成员也可以访问

内部类可以看做是外部类的一个成员,只是这个成员不是属性也不是方法,而是一个类,因此它和外部类的其他成员没有什么区别,和外部类的成员域一样使用。

代码示例:


package main.scala
/**
  * Created by postbird on 2016/9/13.
  */
class OutClassA{
    private[this] var x:Int=0

    //private var x:Int=0;//一样能够进行访问
    //定义内部类
    class InClassA{
        private var y:Int=1
        //内部类属性
        def getOutValueX()=x
        //内部类访问外部类的私有成员
    }
}
object InClassTest {
    def main(args: Array[String]) {
        val out=new OutClassA
        val in=new out.InClassA
        // 因为InClassA实际上就是OutClassA的一个成员,可以使用 out 对象进行内部类的构建
        println(in.getOutValueX)
//        println(out.y)
        //如果外部类调用了内部类的成员,则报如下错误
//        Error:(21, 21) value y is not a member of main.scala.OutClassA
//        println(out.y)

    }
}