Kotlin中的Class和繼承
宣告
Kotlin用class關鍵字來宣告一個類。
class ClassName {public/private/inner} {Type Parameters} (primary constructor){ body }
1.如果沒有必要,訪問許可權修飾符、泛型引數、primary建構函式、body也可以省去:
class ClassName
2.如果沒有宣告訪問許可權,那麼constructor關鍵字可以省去:
class ClassName constructor(val v: Int){} == class ClassName(val v : Int)
建構函式
上面提到了在類名後可以宣告一個primary constructor, 除此之後,我們還可以宣告第二個構造器:
class ClassName (var name: String){
var lastName: String = name;
init{
// init some variables.
}
constructor(var name: String, var sex:Int):this(name){
}
}
在class初始化的順序上,成員屬性和init要先於構造器初始化, 成員屬性和init的初始化順序又程式碼書寫的順序決定。
如果我們只定義了primary construtor,編譯器會為我們生成一個預設的無參建構函式,方便一些反射技術初始化物件。
使用
我們像使用函式一樣的去初始化一個類物件,kotlin中沒有new關鍵字:
var p = Person() var p = Person("name")
繼承
方法過載