物件表達式和物件宣告#

以下是 Kotlin 中 物件表達式(Object Expression)物件宣告(Object Declaration) 的教學,包括它們的特性、語法、範例。


1. 物件表達式(Object Expression)#

特性#

  1. 用於建立匿名類別的實例(匿名類別是無名稱的類別,通常用來建立一次性使用的物件)。
  2. 在需要即時定義類別並建立實例時使用。

語法#

1
2
3
val obj = object : 父類別或介面 {
    // 覆寫方法或新增屬性
}

範例:建立匿名類別#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
interface ClickListener {
    fun onClick()
}

fun main() {
    val clickListener = object : ClickListener {
        override fun onClick() {
            println("Button clicked!")
        }
    }

    clickListener.onClick() // 輸出:Button clicked!
}

範例:擴展類別並新增方法#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
open class Animal {
    open fun sound() {
        println("Animal makes a sound.")
    }
}

fun main() {
    val dog = object : Animal() {
        override fun sound() {
            println("Dog barks.")
        }
    }

    dog.sound() // 輸出:Dog barks.
}

2. 物件宣告(Object Declaration)#

特性#

  1. Kotlin 提供的單例模式(Singleton Pattern)實作,用於建立單例物件。
  2. 使用 object 關鍵字宣告,無需明確建立實例。
  3. 可以包含屬性、方法,甚至初始化區塊。

範例:單例物件#

1
2
3
4
5
6
7
8
9
object Logger {
    fun log(message: String) {
        println("Log: $message")
    }
}

fun main() {
    Logger.log("This is a log message.") // 輸出:Log: This is a log message.
}

範例:包含屬性與初始化邏輯#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
object Config {
    val appName: String
    val version: String

    init {
        appName = "MyApplication"
        version = "1.0.0"
    }
}

fun main() {
    println("App: ${Config.appName}, Version: ${Config.version}")
    // 輸出:App: MyApplication, Version: 1.0.0
}

3. 伴生物件(Companion Object)#

特性#

  1. 每個類別只能有一個伴生物件。
  2. 用於定義與類別相關的靜態成員。

範例:伴生物件#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class Utility {
    companion object {
        fun sayHello() {
            println("Hello from Companion Object!")
        }
    }
}

fun main() {
    Utility.sayHello() // 輸出:Hello from Companion Object!
}

Reference#

https://kotlinlang.org/docs/object-declarations.html

© 2026 CodeReindeer. All rights reserved.