class X {
private[this] val superPrivate: Int = 0
private val kindaPrivate: Int = 1
def doThing(x: X) = x.superPrivate // compile error
def doThing(x: X) = x.kindaPrivate // fine
private[this] val superPrivate: Int = 0
private val kindaPrivate: Int = 1
def doThing(x: X) = x.superPrivate // compile error
def doThing(x: X) = x.kindaPrivate // fine
}
class X { val s = 12; private[this] val superPrivate: Int = 0 private val kindaPrivate: Int = 1 def doThing1(x: X) = this.superPrivate // compile success def doThing(x: X) = x.kindaPrivate // fine }
如上述代码,private定义的变量是可以在另外一个对象中通过该类的对象所访问到,而private[this]仅仅可以被同一个类的同一个对象访问
,private在某种程度上破坏了面向对象的封装性,private[this]仅仅可以被this访问到,这样才符合面向对象的编程,以上猜测