24.访问权限控制

32 阅读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 = "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. 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)
  }
}
结果:

屏幕截图 2025-11-26 113201.png