標準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那樣後面接著建構子等等。
目前先整理到這邊,如果日後還有更多心得,會再補上。