scala权限

26 阅读1分钟
package level02
/*
访问权限控制
1.公开的。不写修饰符
2.protected.保护的
   在类的外部不能访问:
   在子类中访问
3.private ,私有的
  在类的外部不能访问!
  在子类中不能访问
  在伴生对象中可以访问!
  4.prvate[this]
    只能被当前对象中使用
    在类的内部使用
 */
object class24 {
  object Person {
    def test(p.Person):Unit {
    //private 在伴生对象中可以访问!
      println(p.password)
      //private[this]在伴生对象中不能访问
      //println(p.money)
    }
  }
  class Person() {
    var name:String = "xx"; //公开的
    protected var birthday: String = "2000-10-10"
    private var password: String = "123456"
    private[this] var money: Int = 100
    def t():Unit = {
      println(money)
    }
  }
  class Son extends Person(){
    //2.protected 在子类中可访问
    println(birthday)
    //3.protected 在子类中不能访问
    //println(password)
  }
  def main(args: Array[String]): Unit = {
    val p1 = new Person()
    println(p1.name)
    //2.protected在类的外部无法访问
    // println(p1.birthday)
    new.Son
    //3.在伴生对象中访问 类的私有成员
    Person.test(p1)
}

image.png