技術學習記錄

[Android]Kotlin學習筆記#3-類別

標準Class的宣告方式

基本上Kotlin跟Java的類別宣告上面算是大同小異的,同樣都是使用class作為關鍵字。

以下是Kotlin的類別宣告方式:

class A {
    // TODO: Do something…
}

以往我們在Java的類別中要加入建構子時,語法如下:

class A {
    private String str;
    A(String _str) {
        this.str = _str;
    }
    // …以下省略…
 }

Kotlin的類別中要加入建構子,語法如下:

class A constructor(_str: String) {
    private var str = _str
    // …以下省略…
}

另外,Kotlin在宣告類別及建構子時,可以直接省略constructor,讓程式碼簡潔一點:

class A(_str: String) {
    private var str = _str
    // …以下省略…
}

Open Class

Kotlin的類別預設是final的。如果希望這個類別之後要能夠被繼承,則需要在class前面加上open修飾詞。

open class A(_str: String) {
    private var str = _str
    // …以下省略…
}

Data Class

Data Class是Kotlin為了簡化資料模型在撰寫時,不必寫一大堆getter/setter方法的一個特殊類別。

以往在Java的程式語言,要撰寫一個資料模型類別,必須根據你的成員數量加入對應的getter/setter方法,如下列程式碼:

public class A {
    private String value1;
    private String value2;
    public String getValue1() {
        return this.value1;
    }
    public String getValue2() {
        return this.value2;
    }
    public void setValue1(String value) {
        this.value1 = value;
    }
    public void setValue2(String value) {
        this.value2 = value;
    }
}

或許大家已經習慣了。但是當你的成員變數多的時候,getter/setter會是成員變數的數量*2,因此多了很多冗餘的程式碼。

讓我們再和Kotlin版本的資料模型類別對照一下:

data class A(
    var value1: String,
    var value2: String
)

少了許多getter/setter方法,是不是一下子變的簡潔很多呢?

結尾

以上是Kotlin的類別使用方式,和Java相比簡化許多。

例如:資料模型可以使用data class來省掉冗長的getter/setter方法、讓類別可以像function那樣後面接著建構子等等。

目前先整理到這邊,如果日後還有更多心得,會再補上。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *