歡迎光臨 紫楓粉絲頁

Kotlin 類和物件

 在 Kotlin 中,類和物件是兩個重要的概念。類是用來定義數據結構和行為的模板。物件是類的實例。

類的定義

類的定義使用 class 關鍵字,語法如下:

Kotlin
class 類名 {
    // 類體
}
  • 類名:類的名稱。
  • 類體:類的代碼塊。

類體

類體可以包含以下內容:

  • 屬性:用來存儲數據。
  • 方法:用來執行操作。
  • 初始化函數:用來初始化類的屬性。

屬性的定義

屬性的定義使用 valvar 關鍵字,語法如下:

Kotlin
class 類名 {
    val 屬性名: 類型 = 初始值
    var 屬性名: 類型 = 初始值
}
  • val:屬性是只讀的。
  • var:屬性是可讀可寫的。
  • 屬性名:屬性的名稱。
  • 類型:屬性的類型。
  • 初始值:屬性的初始值。

方法的定義

方法的定義使用 fun 關鍵字,語法如下:

Kotlin
class 類名 {
    fun 方法名(參數列表): 返回類型 {
        // 方法體
        return 輸出值
    }
}
  • 方法名:方法的名稱。
  • 參數列表:方法的輸入參數。
  • 返回類型:方法的返回類型。
  • 方法體:方法的代碼塊。
  • 輸出值:方法的返回值。

初始化函數的定義

初始化函數的定義使用 init 關鍵字,語法如下:

Kotlin
class 類名 {
    init {
        // 初始化函數體
    }
}

初始化函數會在物件被創建時執行。

物件的創建

物件的創建使用 new 運算符,語法如下:

Kotlin
val 物件名 = new 類名()
  • 物件名:物件的名稱。
  • 類名:物件的類型。

物件的引用

物件的引用可以使用 :: 運算符,語法如下:

Kotlin
val 物件名 = 類名::class.java
  • 物件名:物件的名稱。
  • 類名:物件的類型。

物件的訪問

物件的屬性和方法可以使用 . 運算符來訪問,語法如下:

Kotlin
val 物件名.屬性名
val 物件名.方法名(參數列表)
  • 物件名:物件的名稱。
  • 屬性名:屬性的名稱。
  • 方法名:方法的名稱。
  • 參數列表:方法的輸入參數。

示例

Kotlin
class Person(val name: String, val age: Int) {
    fun sayHello() {
        println("Hello, my name is $name. I am $age years old.")
    }
}

fun main(args: Array<String>) {
    val person = Person("Bard", 10)

    println(person.name)
    println(person.age)

    person.sayHello()
}

上述示例中,Person 類定義了兩個屬性:nameagesayHello() 方法用來打印物件的名稱和年齡。

main() 函數中,我們創建了一個 Person 物件 person。然後,我們使用 println() 函數來訪問 person 的屬性 name 和 `age

類的繼承

在 Kotlin 中,類可以繼承其他類。繼承允許子類繼承父類的屬性和方法。

繼承的定義

繼承的定義使用 open 關鍵字,語法如下:

Kotlin
open class 父類名 {
    // 父類的屬性和方法
}

class 子類名(
    // 子類的屬性和方法
) : 父類名() {
    // 子類的覆蓋方法
}
  • 父類名:父類的名稱。
  • 子類名:子類的名稱。

覆蓋方法

子類可以覆蓋父類的方法。覆蓋方法的名稱和參數列表必須與父類的方法相同。

示例

Kotlin
open class Animal {
    open fun sayHello() {
        println("Hello, I am an animal.")
    }
}

class Dog : Animal() {
    override fun sayHello() {
        println("Hello, I am a dog.")
    }
}

fun main(args: Array<String>) {
    val animal = Animal()
    animal.sayHello()

    val dog = Dog()
    dog.sayHello()
}

上述示例中,Animal 類定義了一個 sayHello() 方法。Dog 類繼承了 Animal 類,並覆蓋了 sayHello() 方法。

main() 函數中,我們創建了一個 Animal 物件 animal 和一個 Dog 物件 dog。然後,我們調用 sayHello() 方法來打印物件的名稱。

抽象類

抽象類是不能被實例化的類。抽象類可以用來定義通用的接口。

抽象類的定義

抽象類的定義使用 abstract 關鍵字,語法如下:

Kotlin
abstract class 抽象類名 {
    // 抽象類的屬性和方法
}
  • 抽象類名:抽象類的名稱。

抽象方法

抽象類可以定義抽象方法。抽象方法沒有方法體。

示例

Kotlin
abstract class Animal {
    abstract fun sayHello()
}

class Dog : Animal() {
    override fun sayHello() {
        println("Hello, I am a dog.")
    }
}

fun main(args: Array<String>) {
    val dog = Dog()
    dog.sayHello()
}

上述示例中,Animal 類定義了一個抽象方法 sayHello()Dog 類繼承了 Animal 類,並覆蓋了 sayHello() 方法。

伴生對象

伴生對象是與類關聯的一個單例對象。伴生對象可以包含屬性和方法,也可以用來實現單例模式。

伴生對象的定義

伴生對象的定義使用 companion object 關鍵字,語法如下:

Kotlin
class 類名 {
    companion object {
        // 伴生對象的屬性和方法
    }
}
  • 類名:類的名稱。

示例

Kotlin
class Person {
    companion object {
        const val NAME = "Bard"

        fun sayHello() {
            println("Hello, my name is $NAME.")
        }
    }
}

fun main(args: Array<String>) {
    Person.sayHello()
}

上述示例中,Person 類定義了一個伴生對象。伴生對象包含一個常量 NAME 和一個方法 sayHello()

總結

類和物件是 Kotlin 語言中非常重要的概念。掌握類和物件的使用可以幫助您編寫更加靈活和高效的程序。

深入淺出學會編寫程式: https://pse.is/3ksear

Kotlin 實戰手冊: https://bookstw.link/5g3bsy

程式新手學習發問區,問都給問!!: https://www.facebook.com/groups/914880435669061

紫楓FB專頁: https://www.facebook.com/tbpfs2/

紫楓blog: https://tbpfs1.blogspot.com/

斗內專線: https://pse.is/KUYMP


0 意見: