kotlin基礎(chǔ)語(yǔ)法之構(gòu)造方法

學(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ě)代碼的速率大大提升。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

  • 自從實(shí)習(xí)結(jié)束后直到現(xiàn)在將近一年多的時(shí)間再也沒(méi)有用過(guò)kotlin, 在今年五月份I/O大會(huì)上,Google再次明確了...
    Scus閱讀 1,556評(píng)論 0 0
  • 使用 Kotlin 可以編寫(xiě)出簡(jiǎn)潔高效的代碼, 同時(shí)又可以完全兼容既有的 Java 技術(shù)棧(Java-based ...
    安仔夏天勤奮閱讀 609評(píng)論 0 0
  • Java其實(shí)不是編譯型語(yǔ)言,java編譯之后不是計(jì)算機(jī)可識(shí)別的二進(jìn)制文件,而是一種特殊的class文件,這種文件只...
    Dane_404閱讀 523評(píng)論 0 0
  • 在 Kotlin 中的變量、常量以及注釋多多少少和 Java 語(yǔ)言是有著不同之處的。下面詳細(xì)的介紹 Kotlin ...
    馳同學(xué)閱讀 1,167評(píng)論 0 2
  • 1.函數(shù) (1)Main函數(shù)默認(rèn)是Unit返回類(lèi)型,可以定義其他返回類(lèi)型:Int (2)直接聲明一個(gè)函數(shù),給出返回...
    賈里閱讀 591評(píng)論 0 0

友情鏈接更多精彩內(nèi)容