Kotlin教學 | 從零開始學Kotlin | Kotlin入門 | CH14: 物件表達式和物件宣告

物件表達式和物件宣告

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


1. 物件表達式(Object Expression)

特性

  1. 用於創建匿名類別的實例
    • 匿名類別是無名稱的類別,通常用來創建一次性使用的物件。
  2. 在需要即時定義類別並創建實例時使用
  3. 類似於 Java 中的匿名內部類別,但更簡潔

語法

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

範例:創建匿名類別

interface ClickListener {
    fun onClick()
}

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

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

範例:擴展類別並添加方法

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. 可以包含屬性、方法,甚至初始化區塊。

範例:單例物件

object Logger {
    fun log(message: String) {
        println("Log: $message")
    }
}

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

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

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. 用於定義與類別相關的靜態成員。

範例:伴生物件

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

發佈留言