
學(xué)習(xí)kotlin的構(gòu)造方法,首先我們得明白
為什么得有構(gòu)造方法?
? 構(gòu)造方法是在創(chuàng)建對(duì)象自動(dòng)調(diào)用的方法,所以一般用來(lái)對(duì)對(duì)象的變量進(jìn)行初始化。 構(gòu)造方法的作用就是你想一個(gè)對(duì)象剛出生的時(shí)候就長(zhǎng)成什么樣什么樣,而不是先 生出來(lái)一個(gè)默認(rèn)的,然后再賦值賦值賦值。new的時(shí)候會(huì)自動(dòng)調(diào)用構(gòu)造方法,沒(méi)有構(gòu)造方法不能實(shí)例化對(duì)象。
構(gòu)造方法分為兩類(lèi):
1.默認(rèn)的無(wú)參構(gòu)造方法
?類(lèi)本身不知道如何創(chuàng)建自己的對(duì)象,對(duì)象本身是由基層的object(){}來(lái)創(chuàng)建
再由當(dāng)前這個(gè)類(lèi)來(lái)初始化那個(gè)對(duì)象
2.重載的有參構(gòu)造方法,一般有以下兩種作用
? a.為了方便給初始化值
? b.在創(chuàng)建對(duì)象的同時(shí),給與某些需要的數(shù)據(jù)
這時(shí)就討論到了一個(gè)很重要的話題,“時(shí)機(jī)”,我們生成這個(gè)對(duì)象初始化所帶有數(shù)據(jù)的時(shí)機(jī),在創(chuàng)建對(duì)象時(shí)就自動(dòng)賦值初始化,能極大程度上簡(jiǎn)化我們的程序。
明白了以上幾點(diǎn),下面就是Kotlin的構(gòu)造函數(shù)具體實(shí)現(xiàn)內(nèi)容啦
Kotlin構(gòu)造函數(shù)
Kotlin構(gòu)造函數(shù)可以分為兩類(lèi)
1.主構(gòu)造函數(shù)
創(chuàng)建?個(gè)沒(méi)有主體的類(lèi)
class Person
顯示指定構(gòu)造?法
class Person2 constructor()
在主構(gòu)造函數(shù)中有兩種情況,一種是可以省略constructor,另一種則不能省略constructor,
不能省略的情況如下:
a.主構(gòu)造函數(shù)需要傳遞?個(gè)字符串對(duì)象constructor不能省略,如:
class Person3 constructor(var name:String)
b.有修飾符限定構(gòu)造函數(shù)權(quán)限時(shí)constructor不能省略,如:
class Person4 private constructor()
除此之外,如果有父類(lèi),主構(gòu)造函數(shù)必須直接調(diào)??類(lèi)的構(gòu)造函數(shù),如:
open class Father
class Person5 : Father()
如果?類(lèi)有參數(shù)?類(lèi)必須提供相應(yīng)有參的構(gòu)造函數(shù),如:
open class Father2 constructor(name: String)
class Person6 constructor(name: String) : Father2(name)
2.次構(gòu)造函數(shù)
次構(gòu)造函數(shù)在函數(shù)內(nèi)
class Person(){
? ? ? constructor(name:String) : this(){}
}
次構(gòu)造函數(shù)需要注意以下幾點(diǎn):
a.有主構(gòu)造函數(shù),次構(gòu)造函數(shù)必須直接調(diào)?主構(gòu)造函數(shù)
b.如果有?類(lèi),主構(gòu)造函數(shù)必須調(diào)??類(lèi)的構(gòu)造函數(shù),而次構(gòu)造函數(shù)必須繼承主構(gòu)造函數(shù),包括父類(lèi)的構(gòu)造函數(shù)
class Person7(name: String) {
constructor(name: String, age: Int):this(name)
}
c.次構(gòu)造函數(shù)只需要考慮和主構(gòu)函數(shù)的關(guān)系
open class Father3 constructor(name: String)
class Person8 constructor(name: String) : Father3(name){
constructor(name: String, age: Int):this(name)
? Kotlin構(gòu)造函數(shù)的內(nèi)容就大致如上啦,熟練掌握構(gòu)造函數(shù)的使用,靈活實(shí)現(xiàn)構(gòu)造函數(shù)的運(yùn)用,能在我們寫(xiě)程序時(shí)提高我們代碼的簡(jiǎn)潔性,同時(shí)也讓我們寫(xiě)代碼的速率大大提升。