13 private关键字总结
修饰class
1、在class前面使用private可以被相同包(包含递归子包)访问(能引入类);
2、在class前面使用private[包名]代表是包的访问权限,只能指定的包名和子包(包含递归子包)下才能访问;
private修饰 主构造器、主构造器参数、辅助构造器、属性、方法, 当前类和伴生对象可以访问,其他对象不能访问;
private[this]修饰 主构造器、主构造器参数、辅助构造器、属性、方法, 只有当前类可以访问;
private[包名] 修饰 主构造器、主构造器参数、辅助构造器、属性、方法, 指定包名及子包可访问。
示例:
在class前面使用private可以被相同包(包含递归子包)访问(能引入类);
子包可引入
其他包不能引入
在class前面使用private[包名]代表是包的访问权限,只能指定的包名和子包(包含递归子包)下才能访问;
package day03
// private[this] 修饰的主构造器,伴生对象和其他对象都不可访问
class PrivateDemo2 private[this] (val name:String) {
var age:Int = _
// private[包名] 修饰的辅助构造器,同包名或递归子包都可访问
private[day03] def this(name:String, age:Int ) = {
this(name)
this.age = age
}
}
object PrivateDemo2{
def main(args: Array[String]): Unit = {
// val demo = new PrivateDemo2("hainiu")
val demo = new PrivateDemo2("hainiu", 10)
}
}
object privateDemo2Other{
def main(args: Array[String]): Unit = {
// val demo = new PrivateDemo2("hainiu")
val demo = new PrivateDemo2("hainiu", 10)
}
}