Kotlin類和對象

Kotlin支持面向對象編程(OOP)以及函數式編程。 面向對象編程基於對象和類。 Kotlin還支持OOP語言的支柱,如:封裝,繼承和多態。

Kotlin類

Kotlin類與Java類基本類似,類是具有共同屬性的對象的藍圖。 Kotlin類使用關鍵字class聲明。 Kotlin類有一個類頭,它指定了它的類型參數,構造函數等,以及由花括號包圍的類體。

Kotlin類聲明的語法

class className{   // class header  
      // property  
      // member function  
}

在上面的示例中,class className是一個空構造函數。 它由編譯器自動生成,但如果想提供構造函數,需要編寫一個構造函數關鍵字,後跟類名:

class className constructor(){   // class header  
      // property  
      // member function  
}

Kotlin類實例

class Account {
    var acc_no: Int = 0
    var name: String? = null
    var amount: Float = 0f

    fun deposit() {
        //deposite code
    }

    fun withdraw() {
        // withdraw code
    }

    fun checkBalance() {
        //balance check code
    }
}

Account類有三個屬性acc_nonameamount和三個成員函數:deposit()withdraw()checkBalance()

在Kotlin中,屬性必須初始化或聲明爲抽象。 在上面的類中,屬性acc_no初始化爲0namenullamount0f

Kotlin對象

對象是實時實體,或者可以是具有狀態和行爲的邏輯實體。 它具有以下特點:

  • 狀態:表示對象的值。
  • 行爲:它表示對象的函數。

對象用於訪問類的屬性和成員函數。 Kotlin允許創建一個類的多個對象。

創建一個對象

Kotlin對象分兩步創建,第一步是創建引用,然後創建一個對象。

var obj1 = className()

創建多個對象 -

var obj1 = className()  
var obj2 = className()

這裏obj1obj2是引用,className()是一個對象。

訪問類屬性和成員函數

類的屬性和成員函數可以通過.運算符訪問對象。 例如:

obj.deopsit()  
obj.name = Ajax

下面創建一個使用.運算符來訪問類屬性和成員函數的示例。

class Account {
    var acc_no: Int = 0
    var name: String =  ""
    var amount: Float = 0.toFloat()
    fun insert(ac: Int,n: String, am: Float ) {
        acc_no=ac
        name=n
        amount=am
        println("賬號: ${acc_no} ,賬戶名 :${name},總金額 :${amount}")
    }

    fun deposit() {
        //deposite code
    }

    fun withdraw() {
        // withdraw code
    }

    fun checkBalance() {
        //balance check code
    }

}
fun main(args: Array<String>){
   // Account()
    var acc= Account()
    acc.insert(832345,"Maxsu",1000f) // 訪問成員函數
    println("${acc.name}") // 訪問類屬性
}

執行上面示例代碼,得到以下結果 -

賬號: 832345 ,賬戶名 :Maxsu,總金額 :1000.0  Maxsu