Scala的访问权限

41 阅读1分钟

一.访问权限控制

  1. 公共的,不添加修饰符,在任何地方都可以访问
  2. protected:受保护的,在类的外部不能访问,在子类中访问
  3. private:私有的,在类的外部都不能访问,在子类中不能访问。在伴生对象中可以访问
  4. private [this]只能被当前对象中使用,在类的内部使用。
object Person {
  def test(p: Person): Unit = {
    // private在伴生对象中可访问
    println(p.password)
    // private[this]在伴生对象中都不可访问
    // println(p.money)
  }
}

class Person() {
  var name: String = "***" // 公开的
  protected var birthday: String = "2000-10-10"
  private var password: String = "12345"
  private[this] var money: Int = 100
  def t(): Unit = {
    println(money)
  }
}

class Son extends Person() {
  // 2.protected在子类中可访问
  println(birthday)
  //3. private在子类中不可访问
  // 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)
}