【Kotlin 入門指南】Companion Object

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

Companion Object

Companion Object(伴生物件),它允許在類別內建立一個專屬的物件,這個物件與該類別相關聯,可用來存取該類別的屬性和函數。透過 Companion Object,你能夠實現類似於 Java 中的靜態成員的功能。

Companion Object 伴生物件範例

class MyClass {
companion object {
const val CONSTANT_VALUE = 666
val instance = MyClass()
}
fun myFun(){
println("myFun...")
}
}

fun main() {
println(MyClass.instance)//MyClass@4c203ea1
println(MyClass.instance)//MyClass@4c203ea1

println(MyClass.CONSTANT_VALUE)//666

MyClass.instance.myFun()//myFun..
}

在這範例中,MyClass 內部有一個 Companion Object,使用 companion object 關鍵字定義。你可以在 Companion Object 中定義屬性、函數,甚至是常數,而這些可以直接通過 MyClass 類別的名稱來存取,例如 MyClass.CONSTANT_VALUEMyClass.myFunction()

Companion Object 的特性

  1. 與類別相關聯: Companion Object 被限定在它所在的類別內部,可以直接存取該類別的屬性和函數。
  2. 靜態成員的替代: Kotlin 沒有 Java 中的靜態成員,Companion Object 提供了一種方式來實現類似功能,同時保持了物件導向的特性。
  3. 初始化: Companion Object 在第一次被訪問時初始化,就像是靜態初始化一樣,並且僅在需要時才會被創建。

使用情境

  1. 工具函數: 如果你有一組與特定類別相關的實用函數,可以將它們放置在 Companion Object 中,方便全域存取。
  2. 常數定義: 在 Companion Object 中定義常數,例如預設值或常用數值,便於管理和使用。


avatar-img
10會員
233內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液