
- Scala 教程
- Scala - 首頁
- Scala - 概述
- Scala - 特性
- Scala - 環境設定
- Scala - 構建工具 (SBT)
- Scala - 基本語法
- 資料型別和變數
- Scala - 資料型別
- Scala - 變數
- Scala - 字串
- Scala - 陣列
- Scala 運算子
- Scala - 運算子
- Scala - 算術運算子
- Scala - 關係運算符
- Scala - 邏輯運算子
- Scala - 位運算子
- Scala - 賦值運算子
- Scala 條件語句
- Scala - IF ELSE
- Scala 迴圈語句
- Scala - 迴圈語句
- Scala - while 迴圈
- Scala - do-while 迴圈
- Scala - for 迴圈
- Scala - break 語句
- Scala 類與物件
- Scala - 類與物件
- Scala - 訪問修飾符
- Scala 方法與函式
- Scala - 函式
- Scala - 按名稱呼叫函式
- Scala - 帶命名引數的函式
- Scala - 帶可變引數的函式
- Scala - 遞迴函式
- Scala - 預設引數值
- Scala - 高階函式
- Scala - 巢狀函式
- Scala - 匿名函式
- 部分應用函式
- Scala - Curry 化函式
- Scala 集合
- Scala - 集合
- Scala - 列表
- Scala - 集合
- Scala - 對映
- Scala - 元組
- Scala - 迭代器
- Scala - Options
- Scala 模式匹配
- Scala - 模式匹配
- Scala - 異常處理
- Scala - 提取器
- Scala - 正則表示式
- Scala 檔案 I/O
- Scala - 檔案 I/O
- Scala 高階概念
- Scala - 閉包
- Scala - 特質
- Scala 有用資源
- Scala - 快速指南
- Scala - 線上編譯器
- Scala - 有用資源
- Scala - 討論
Scala - 訪問修飾符
本章將引導您瞭解 Scala 的訪問修飾符。包、類或物件的成員可以使用訪問修飾符 `private` 和 `protected` 進行標記,如果我們沒有使用這兩個關鍵字中的任何一個,則訪問將被假定為 `public`。這些修飾符將對成員的訪問限制在程式碼的特定區域。要使用訪問修飾符,您需要在其關鍵字包含在包、類或物件的成員定義中,如下節所示。
私有成員
私有成員僅在其包含成員定義的類或物件內部可見。
以下程式碼片段示例解釋了私有成員:
示例
class Outer { class Inner { private def f() { println("f") } class InnerMost { f() // OK } } (new Inner).f() // Error: f is not accessible }
在 Scala 中,訪問 (new Inner).f() 是非法的,因為 f 在 Inner 中宣告為私有,並且訪問並非來自 Inner 類內部。相反,在 Innermost 類中第一次訪問 f 是可以的,因為該訪問包含在 Inner 類的主體中。Java 將允許這兩種訪問,因為它允許外部類訪問其內部類的私有成員。
受保護成員
受保護成員只能從定義成員的類的子類訪問。
以下程式碼片段示例解釋了受保護成員:
示例
package p { class Super { protected def f() { println("f") } } class Sub extends Super { f() } class Other { (new Super).f() // Error: f is not accessible } }
在 Sub 類中訪問 f 是可以的,因為 f 在 'Super' 類中宣告為受保護,而 'Sub' 類是 Super 的子類。相反,不允許在 'Other' 類中訪問 f,因為 'Other' 類不繼承自 'Super' 類。在 Java 中,後者訪問仍然是被允許的,因為 'Other' 類與 'Sub' 類位於同一個包中。
公共成員
與私有和受保護成員不同,不需要為公共成員指定 Public 關鍵字。公共成員沒有顯式修飾符。這些成員可以從任何地方訪問。
以下程式碼片段示例解釋了公共成員:
示例
class Outer { class Inner { def f() { println("f") } class InnerMost { f() // OK } } (new Inner).f() // OK because now f() is public }
保護範圍
Scala 中的訪問修飾符可以使用限定符進行增強。`private[X]` 或 `protected[X]` 形式的修飾符意味著訪問對 X 是私有的或受保護的,“直到” X,其中 X 指定某個封閉的包、類或單例物件。
考慮以下示例:
示例
package society { package professional { class Executive { private[professional] var workDetails = null private[society] var friends = null private[this] var secrets = null def help(another : Executive) { println(another.workDetails) println(another.secrets) //ERROR } } } }
注意 - 以上示例中的以下幾點:
變數 workDetails 可被 professional 包中的任何類訪問。
變數 friends 可被 society 包中的任何類訪問。
變數 secrets 只能在例項方法 (this) 內的隱式物件中訪問。