scala 系列之 10scala 的 private 关键字

13 private关键字总结

修饰class

1、在class前面使用private可以被相同包(包含递归子包)访问(能引入类);

2、在class前面使用private[包名]代表是包的访问权限,只能指定的包名和子包(包含递归子包)下才能访问;

private修饰 主构造器、主构造器参数、辅助构造器、属性、方法, 当前类和伴生对象可以访问,其他对象不能访问;

private[this]修饰 主构造器、主构造器参数、辅助构造器、属性、方法, 只有当前类可以访问;

private[包名] 修饰 主构造器、主构造器参数、辅助构造器、属性、方法, 指定包名及子包可访问。

示例:

在class前面使用private可以被相同包(包含递归子包)访问(能引入类);

file

子包可引入

file

其他包不能引入

file

在class前面使用private[包名]代表是包的访问权限,只能指定的包名和子包(包含递归子包)下才能访问;

file
file
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)
  }
}

海汼部落原创文章,原文链接:http://hainiubl.com/topics/75745

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容