Scala访问权限

18 阅读1分钟

- 访问权限设置

  • 默认访问权限
  1. 使用protect(被保护的)修饰符
  2. 在类的内部不能直接通过对象 属性的方式访问
  • private(私有的)
  1. 在子类中 无法访问
  2. 在伴生对象 伴生类可以访问 特点如下:
  3. 在类的内部可以访问
  4. 在类的外部不能访问 private[this]
  5. 在伴生对象不能访问 private[this]
  6. 在子类中不能访问 private[this]

package level02

import java.io.FileWriter



object class24{
//name 属性具有默认的访问权限
  class Student(var name:String,protected  var gender:String) {

  }



  def main(args: Array[String]): Unit = {
    val s1 = new Student("小虎 ","女")
    println(s1.name)
//protected 属性 在类的内部无法访问
    //println(s1.gender)

  }
}

package level02


object class25{
//name 属性具有默认的访问权限
 class Father() {
  var anme:String = "小花"

  protected  var gender:String = "女"
  protected  def test():Unit = {
    println("test")
  }
}
  protected  var gender:String = "女"
  protected  def test1():Unit = {
    println("test1")
  }



  def main(args: Array[String]): Unit = {
   class Son extends Father{
     super.test()
   }
  }
}

package level02

import level02.class06.Student
//在伴生对象 伴生类可以访问
object class26 {
  class Student() {
    private var age: Int = 10
    private[this] var secrest:String ="XX日xx事"
    def test():Unit ={
      println(secrest)
  }
}
  object Student {
    def test(stu: Student): Unit = {
      //在半生对象中 可以通过对象 属性的方法来访问
      println(stu.age)
    }

  }


  def main(args: Array[String]): Unit = {
    val stu = new Student()
    //private 成员 不能被类的外部 通过对象 属性的方法来访问
    //报错:stu.age
    Student.test(stu)

  }
}