访问权限

39 阅读1分钟
访问权限: 类的成员(属性, 方法)在哪些地方可以被访问。
1. private : 私有的。
   (1) 在类的内部可以访问。
   (2) 在类的外部不能访问。
   (3) 在伴生对象中可以访问。

根据这些定义,我们可以输入以下代码:

package level02

import level02.class20.Student.test

/*
访问权限: 类的成员(属性, 方法)在哪些地方可以被访问。
1. private : 私有的。
   (1) 在类的内部可以访问。
   (2) 在类的外部不能访问。
   (3) 在伴生对象中可以访问。
 */
object class20 {

  class Student(var name: String, private var age: Int) {
    def say(): Unit = {
      println(s"${this.age}") // (1) 在类的内部可以访问。
    }
  }

  object Student {
    def test(student: Student): Unit = {
      println(student.age) // (3) 在伴生对象中可以访问。
    }
  }

  def main(args: Array[String]): Unit = {
    val s1 = new Student("小花", 18)
    s1.say()
    // println(s1.age) // 报错。(2) 在类的外部不能访问。
    Student.test(s1)
  }
}

运行结果如图所示:

image.png 还可以抄写一下代码:

object class21 {

  class Bank(private[this] var balance:Double) {
    // 存
    def deposit(amount:Double):Unit = {
      balance += amount
    }
    // 取
    def withdraw(amount:Double):Unit = {
      if(balance >= amount) {
        balance -= amount
      }
    }
    def getBalance():Double = balance
  }

  object Bank {
    def clear(bank: Bank): Unit = {
      // 在第11行, 添加了private[this]之后, 就不能再直接访问balance属性
      // bank.balance = 0
    }
  }

  def main(args: Array[String]): Unit = {
    val bank = new Bank(100)

    bank.deposit(10000)
    bank.withdraw(200)

    // bank.balance -= 100
    // bank.balance -= 100

    Bank.clear(bank)
    println(bank.getBalance())
  }
}

运行结果如图

image.png 访问权限: 类的成员(属性, 方法)在哪些地方可以被访问。

  1. private : 私有的。 (1) 在类的内部可以访问。 (2) 在类的外部不能访问。 (3) 在伴生对象中可以访问。