public/private/protected的具体区别:
在说明这四个关键字之前,先对class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
4.对于private[spark]这种使用就是:
/**
* Scala 对private关键字进行的细粒度访问控制
* 和java不一样的在与protected关键字和private关键字,Scala默认的关键字是public
* Scala支持嵌套包定义
* 如果需要对别的包可见的话,可以写成private[cn],private[limbo]等
* import语句可以写在任意的位置
*/
package cn.limbo.demo
package society{
package professional{
class Executive {
private [professional] var workDetails = null;
private [society] var friends = null
private [this] var secrets = null //this表示只能在该实例下才可以访问该属性
def help(another : Executive){
println(another.workDetails)
// println(another.secrets) // error
}
}
}
package social {
class Acquaintance() {
def socialize(person:professional.Executive): Unit ={
println(person.friends) // ok
// println(person.workDetails) // error
}
}
}
}