Kotlin的構造函數分爲主構造器(primary constructor)和次級構造器(secondary constructor)。下面我們來看看他們的寫法
1. Primary Constructor
1.1 寫法規則
class 類名 constructor(形參1, 形參2, 形參3){}
class Person constructor(username: String, age: Int){
private val username: String
private var age: Int
init{
this.username = username
this.age = age
}
}
-
關鍵字
constructor
:在Java中,構造方法名須和類名相同;而在Kotlin
中,是通過constructor
關鍵字來標明的,且對於Primary Constructor
而言,它的位置是在類的首部(class header)而不是在類體中(class body)。 -
關鍵字
init
:init{}
它被稱作是初始化代碼塊(Initializer Block
),它的作用是爲了Primary Constructor
服務的,由於Primary Constructor
是放置在類的首部,是不能包含任何初始化執行語句的,這是語法規定的,那麼這個時候就有了init
的用武之地,我們可以把初始化執行語句放置在此處,爲屬性進行賦值
1.2 可以簡化代碼的情形
當 constructor
關鍵字沒有註解和可見性修飾符作用於它時,constructor
關鍵字可以省略(當然,如果有這些修飾時,是不能夠省略的,並且 constructor
關鍵字位於修飾符後面)。那麼上面的代碼就變成:
class Person (username: String, age: Int){
private val username: String
private var age: Int
init{
this.username = username
this.age = age
}
}
初始化執行語句不是必須放置在 init
塊中,我們可以在定義屬性時直接將主構造器中的形參賦值給它:
class Person(username: String, age: Int){
private val username: String = username
private var age: Int = age
}
如果類不包含其他操作函數,那麼連花括號也可以省略
class Person(private val username: String, private var age: Int)