Kotlin構造方法詳解與初始化過程分析


在上一次https://www.cnblogs.com/webor2006/p/11192025.html已經初識了Kolin的面向對象,先來回顧一下:

介紹了primary 構造方法,其特點回憶一下:

其中一個類中還有可能有多個sdcondary構造方法,所以接下來會來學習它,先定義一個帶一個參數的primary構造方法:

然后給類中定義三個成員變量,先來定義一個:

這跟Java是完全不一樣的,解決辦法之一是將其定義成abstract的,但是關於abstract的定義之后再系統學習,所以目前咱們只能對這個變量進行初始化一下下了,這里可以放到init塊中,如下:

其實我們可以發現:

接着再定義兩個成員屬性,如下:

接下來則來學習一下secondary構造方法的定義,它是定義在類體當中的,下面來定義一個:

言外之意就是說在我們定義secondary構造方法時,一定是要直接或者間接去調用primary構造方法的,所以:

這樣第一個secondary構造方法就定義好了,可以發現構造方法是沒有名字的,這也是跟Java的一個不同點。接着再定義第二個secondary構造方法,如下:

接下來則定義一個打印方法,然后調用看一下:

針對這個程序再來多說幾點:

1、如果對於一個類未定義任何構造方法,則默認會生成一個primary構造方法。

2、如果沒有給構造方法加訪問修飾符【未來會詳細學習它的】,默認是public級別的,這個跟Java是不一樣的。所以如果想私有構造則需:

接下來Kotlin其實還有更加簡便的方式能夠在構造時就能夠對類的屬性進行賦值,也是跟Java完全不一樣的,具體看一下如何寫:

其中private是可以去掉的:

IDE會提示:

還是將其還原成private,下面來調用一下:

另外對於之前primary構造方法的定義規則:

下面用代碼來驗證一下:

變成:

但是,如果加了訪問修飾符:

將constructor給去掉,會立馬報錯:

另外構造參數可以定義默認參數,類似c++,如下:

下面來使用一下:

同時創建時也繼續可以傳遞新參數,如下:

另外還有點需要明白:“在JVM上,如果類的primary構造方法的所有參數都擁有默認值,那么Kotlin編譯器就會為這個類生成一個不帶參數的構造方法。這個不帶參數的構造方法會使用這些參數的默認值,這樣做的目的在於可以跟Spring等框架更好地集成。” 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM