【Kotlin 入門指南】可見性修飾關鍵字 (Visibility modifiers)

閱讀時間約 4 分鐘
【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q

可見性修飾關鍵字

在 Kotlin 程式語言中,可見性修飾關鍵字(Visibility Modifiers)用來控制類別、物件、介面、函數和屬性的可見範圍。可見性修飾關鍵字扮演著極其重要的角色,它們確定了程式碼中各元素的可見範圍,從而影響了程式的結構、安全性以及擴展性。了解這些修飾關鍵字的作用,將有助於更好地掌握程式碼的設計與架構。

以下是 Kotlin 程式語言中,可見性修飾關鍵字及其作用:

  • open : 開啟,允許子類別繼承後可以覆寫
  • public : 公開,預設沒額外宣告的成員都是公開看得到。
  • private:私有,該成員只有在該類別才看得到。
  • protected : 保護,該成員在子類別也可以看到。
  • internal : 內部,只有該模組才可以看得到

open : 開啟

open 這個關鍵字,它的作用是允許該元素被子類別繼承並進行覆寫(override)。預設情況下,類別、方法和屬性都是不可被繼承和覆寫的,除非你使用了 open 關鍵字。

open class Animal {
open fun makeSound() {
println("Animal is making a sound")
}
}

class Dog : Animal() {
override fun makeSound() {
println("Dog is barking")
}
}

public : 公開

public 是 Kotlin 中最常見且最寬鬆的可見性修飾符。若一個成員沒有額外宣告可見性修飾符,則預設為 public。被標記為 public 的元素可以在任何地方被存取。

class Example {
// 預設為 public
val number: Int = 5

// 預設為 public
fun doSomething() {
// 可在任何地方存取
}
}

private:私有

當你想限制某個元素只能在它所屬的類別內部被訪問時,可以使用 private 修飾符。這表示該成員只有在同一類別中才可見,外部程式碼無法存取。

class Example {
private val secretCode: String = "1234"

private fun doSomething() {
// 只能在此類別內部存取
}
}

protected : 保護

protected 修飾符與 private 類似,但它允許子類別訪問所修飾的成員。這意味著該成員不僅在自身類別內部可見,也可以在其子類別中被存取。

open class Parent {
protected val count: Int = 5
}

class Child : Parent() {
fun accessParent() {
println("Count is: $count") // 子類別可以存取父類別中的 protected 屬性
}
}

internal : 內部

internal 可見性修飾符可以限制元素的可見範圍在相同模組內。只有相同模組內的程式碼可以訪問標記為 internal 的元素。

internal class InternalClass {
internal fun doInternalThing() {
// 只有在同一個模組內可被存取
}
}

這些可見性修飾關鍵字是 Kotlin 中控制程式碼結構和存取範圍的重要工具。選擇適當的可見性修飾符有助於提高程式碼的安全性和可讀性,同時也能更好地組織和管理程式碼。

3會員
176內容數
本指南將以清晰易懂的方式介紹基礎概念,讓你能夠快速上手,輕鬆踏上學習 Kotlin 的旅程 透過簡單易懂的方式,讓你將能夠在短時間內建立起對 Kotlin 的基本了解,並開始實際應用於你的專案之中。不論你是想要進入 Android 開發領域或者只是想探索新的程式語言,這份指南都會成為你學習 Kotlin 的理想起點。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
學習 Kotlin 系列:條件式 你是誰的人條件式可以說是程式重要的能力,也是判斷作業流程細心程度的地方。 條件式 (Condition) ,顧名思義,只有符合條件才做事。 身為一個好士兵,就要執行自家長官的命令。如果是來自敵方隊伍、屬下、路人的命令,就可以快樂的無視他們。 關鍵程式碼大概就會是這樣: if (發令者 == 自家長官) {執行
avatar
Kate
2020-08-05
學習 Kotlin 系列:變數資料型別 正數相加可為負接續上次的士兵類別,提到名字用了 String 變數。 String 是字串的意思,在 Kotlin 裡,常見變數可以分成幾個基本資料型別:數字(Number)、字串(String)、布林(Boolean)。 差別在於行為模式不同,以加法為例,數字執行數學課上的四則運算的加法,字串卻做了連接,布林則
Thumbnail
avatar
Kate
2020-06-02
學習 Kotlin 系列:類型、物件、變數 出來吧,我的士兵作為指揮官,如果只有一個部下也太令人傷心了。 為能夠有效率的取得大量的士兵,使用類型(Type)來廉價批發。 建立一個檔案「士兵.kt」,這次選 class,讓 IDE 幫我們初始化類別的程式碼 。 建立一個檔案「士兵.kt」,選 class 。  IDE 預設將 class 取名和檔案一樣。 初級
Thumbnail
avatar
Kate
2020-05-22
學習 Kotlin 系列:函數、參數 yes, my master程式是個單純的小伙子,他會按照程式碼的內容執行動作,所以我們可以把函數當作給他的指令「單位」,不是最小單位,就只是單位。 以下是令人熱血沸騰的情境: 「射擊準備!發射角度東偏南33度,目標距離200公尺,風向正西速度每小時100公里,氣溫38度,濕度百分之20。」 「yes, my master.」
avatar
Kate
2020-05-17
學習 Kotlin 系列:建立檔案現在,開始建立第一個檔案吧,一樣用最簡單的 Hello World 示範。 在 kotlin 資料夾按右鍵選擇 New 裡的 Kotlin File/Class 。 雖然有許多格式可以選,但其實只是 IDE 提供初始程式碼的差別,完全可以中途更改,我們這次選最基本的 File 格式就好。 命名檔案和
Thumbnail
avatar
Kate
2020-05-14
學習 Kotlin 系列:Hello World會撰寫 Hello World 程式,證明我們已經推開程式語言的大門,成為會寫這門語言的開發者,所以,現在就先來寫 Hello World 吧。 目標:印出 Hello World 這串文字。
Thumbnail
avatar
Kate
2020-05-09
學習 Kotlin 系列:建立專案所謂專案,就是項目,或者說是主題。 比如說我今天打算寫個猜數字遊戲,於是就建立一個名為「猜數字」的專案。 如果要和外國人合作開發,專案名稱取英文會比較好,雖然不是每個外國人英文都很好,但是工程師要有基本的英文閱讀能力,科技界很多第一手消息都是英文,我們用的開發介面 Intellij IDEA
Thumbnail
avatar
Kate
2020-05-07
學習 Kotlin 系列:物件導向語言也許有人聽過, Kotlin 是物件導向語言。 既然都特別提了,肯定還有其他種語言,那就是程序導向語言。 最大的差別就是因為物件導向語言有了物件的概念,所以有了三大能力:繼承(Inheritance)、封裝(Encapsulation)和多型(Polymorphism)。
avatar
Kate
2020-05-06
學習 Kotlin 系列:安裝 IDE到官方網站 https://www.jetbrains.com/idea/ 下載名為 IntelliJ IDEA 的 IDE (整合開發環境:意味著撰寫、編譯、連結、除錯、執行等步驟全都包)。 因為安裝只要按照預設選項不停地點下一步,所以就不另做說明了,如果讀者有遇到安裝問題,可以留言提問。
avatar
Kate
2020-05-05
Kotlin Heroes contest 練習這幾天參加了 Kotlin Hero 程式競賽前的練習,有個特別的體驗。 看題目一邊理解題意時,一邊就會在心理想像出程式流程的設計長得怎麼樣,比如輸入數值的型態為何?需不需要字串拆解?用什麼迴圈或遞迴編碼結構?一邊實作出來。或是歸納題意後,用數學運算公式整理簡化,比如真值表簡化換算,或是套用等差級數
Thumbnail
avatar
吳欣展
2020-02-26