Kotlin學習筆記2 物件導向

2021-08-28 16:35:31 字數 2303 閱讀 5634

1. 類的定義

kotlin中用class關鍵字定義乙個類。

//定義乙個空類

class emptyclass

//在kotlin中,乙個類可以有primary構造方法, 以及乙個或多個secondary構造方法

//primary 構造方法是類頭(class header)的一部分,它位於類名後面,可以擁有若干引數

//如果 primary構造方法沒有任何註解或是可見性關鍵字修飾, 那麼constructor關鍵字可以省略

class myclass constructor

(username: string)

/** * 定義和方法體放在一起了

* 對於secondary構造方法的呼叫,一定會直接或間接的呼叫primary構造方法

*/constructor

(username: string, age: int)

:this

(username)

}fun

main

(args: array

)

輸出結果:

primary constructor: username zhangsan , age : 30

primary constructor: username lisi , age : 30

second constructor: username: lisi, age: 50

可以看出,通過secondary構造方法例項化物件時,primary構造方法會首先得到呼叫,其次呼叫secondary構造方法。

宣告乙個類的屬性可以直接在primary構造方法引數中定義,更為簡潔:

class

person

(private

val firstname: string,

private

val age: int,

private

val lastname: string)

}

在jvm上,如果乙個類的primary構造方法的所有引數都包含預設值,那麼kotlin編譯器就會自動生成乙個預設的不帶引數的構造方法,該方法會使用這些引數的預設值,目的在於跟spring等框架更好的整合。如下程式可以正常執行:

class

person

(private

val firstname: string =

"deng"

,private

val age: int =25,

private

val lastname: string =

"changjian")}

funmain

(args: array

)

2. 類的繼承

**示例:

/**

* 乙個類要想被繼承,必須被open關鍵字修飾

*/open

class fruit

funexpirationdate()

}注意繼承這裡的()不能省略

open()

:fruit()

constructor

(color: string)

:this()

//方法被重寫,必須新增override修飾符,並且父類的對應方法也必須被open修飾

//已經被重寫的方法可以繼續被子類重寫

//如果該方法不想被子類重寫,可以新增final關鍵字修飾

override

funname()

open

fungetcolor()

}//注意繼承這裡的()不能省略,在構造方法呼叫時會呼叫父類的構造方法

("red color")}

funmain

(args: array

)

3. 介面實現

inte***ce關鍵字定義乙個介面。

介面可以定義抽象方法,也可以定義介面實現。

inte***ce a 

funmethod1()

}open

class b

}class c : a,b(

)override

funmethod()

}fun

main

(args: array

)

super.method(), 該語法可以指定具體呼叫哪個介面的方法。

kotlin學習筆記2

函式宣告的方式 1 一般方式 fun fun name 引數 引數型別 返回值型別 當函式只有一行時 var i 引數型別,引數型別 返回值型別 i x,y 直接呼叫 例如 var i int,int int i 3,5 更簡潔的寫法 var i 變數i本身就是乙個函式 i 引數 直接進行呼叫 具名...

Swift學習筆記 物件導向(2)

定義計算屬性 修飾符 var 計算屬性名 屬性型別 set 形參名 1,修飾符可省略 2.var 只能定義成變數,因此只能使用var 使用列舉定義乙個計算屬性 enum season set set newvalue var s season.spring 正在執行getter方法 春暖花開 pri...

物件導向java學習筆記2

x abc y x和y指向同乙個。x abc y abc x和y的值相同。拓 char x abc char y abc x y的結果是false,判讀的是指標引用的記憶體位址不同 x y的結果是true,兩個指標位址所儲存的數值相同。例項1 package oolearning public cl...