scala 访问权限

55 阅读2分钟

一.访问权限

1.1.

/**
 *访问权限控制
 *
 * 1.默认访问权限
 * 2.使用protected(被保护的)修饰符
 *  (1)在类的外部 不能直接通过对象 属性的方式来访问
 */
object class1124 {
// 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)
  }
}

1.2.

/*
 *访问权限控制
 *
 * 1.默认访问权限
 * 2.使用protected(被保护的)修饰符
 *  (1)在类的外部 不能直接通过对象 属性的方式来访问
 *  (2)在子类中 通过super来访问protected的方法
 * 3.private 私有的
 *  (1)在子类中 无法访问
 */


object class11242 {

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

    var gender:String = "女"

    protected def test():Unit = {
      println("test")
    }

    private val age:String = "18"
    private def test1():Unit = {
      println("test1")
    }
}

  //在子类中 我们通过super 来访问父类
  class Son extends Father{
    //修饰的成员 可以再子类中 访问
    super.test()
    println(gender)
    //protected 修饰的成员 可以在子类中 不访问
    //super.test1()
    //println(age)
  }

def main(args: Array[String]): Unit = {
  var son1 = new Son()
  }
}

1.3.

/*
 *访问权限控制
 *
 * 1.默认访问权限
 * 2.使用protected(被保护的)修饰符
 *  (1)在类的外部 不能直接通过对象 属性的方式来访问
 *  (2)在子类中 通过super来访问protected的方法
 * 3.private 私有的
 *  (1)在子类中 无法访问
 *   (2)在伴生对象 伴生类中可以访问
 *
 * */


object class11243 {
  class Student() {

    private var age:Int = 10

  }

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