關于kotlin構造器只讀這一篇就夠了,constructor

kotlin的構造器和java的有很大不同,第一次上手可能會使很多小伙伴懵逼,
那就花15分鐘讀這篇文章,弄清楚kotlin構造器吧

導讀
1.主次構造的區(qū)別
2.主次構造的關系
3.繼承
4.init方法

1.主次構造的區(qū)別

主構造方法就是直接跟在類名后面的,最多1個,可以沒有:

class AAA()//對,你沒看錯“()”就是構造方法

次構造方法聲明在類內,可以有多個,也可以沒有:

calss BBB{//主構造方法沒有聲明
   constructor(){//聲明了一個次構造器
   }
}

如果主構造和次構造都沒有,類還是會默認有一個無參構造方法

2.主次構造關系

如果有主構造方法,
則次構造方法必須調用主構造方法,使用this關鍵字,
例如:

class AAA(){//“()”就是主構造方法
    constructor(s:String):this(){//必須使用this調用主構造方法
    }
}

3.繼承

假設有類AAA:

class AAA(val s:String)//沒有無參構造方法

任何類繼承自AAA時,必須調用AAA的構造方法,
調用方式1:

class BBB(s:String) : AAA(s)

調用方式2:

calss BBB : AAA{
   constructor(s:String) : super(s) {//使用": super(s)"調用父類構造方法
   }
}

4.init方法

不管是什么構造方法,先執(zhí)行init{},后執(zhí)行構造方法的邏輯,
注意,在主構造聲明的參數可以在init{}中調用,次構造的不能。

kotlin的主次構造設計是為了減少代碼而復雜規(guī)則,有舍有得,
相比之下,我還是更喜歡java的構造器,無論是寫法還是思想,都簡單明了,蘊含美感。

end

如果你覺得這篇文章對你有所幫助,不妨點一個贊,作者會非常高興的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容