kotlin的主次构造函数

joshuachenjiahao / 2024-06-06 / 原文

前言:每种语言都有自己的特性,在kotlin语言中,构造函数有主次之分,对于第一次接触可能很难去理解。

一、主次构造函数和init代码块之间的执行顺序
主构造函数——>init代码块——>次构造函数
个人理解:先执行主构造函数构造出对象的主体,然后执行init代码块进行初始化,这时对象的模板已经出来了,再执行次构造函数使对象个性化。

二、主构造函数
一个类必须要有主构造函数,如Java语言一样,如果自己不定义主构造函数,系统会默认定义一个空参主构造函数
主构造函数的位置就是在类名后面。我们写的时候一般省略关键字constructor,直接写一个()即可

带参数的主构造函数(这里参数带val/var和不带val/var又有区别)

三、init代码块
这个东西结合上面的介绍来看,可有可无,具体看用不用将主构造函数的值传递给类属性

四、次构造函数
次构造函数可有可无,具体看场景,并且可以定义多个次构造函数
次构造函数一定要继承主构造函数,直接继承或者间接继承
次构造函数必须加上constructor关键字(主构造函数我建议不加,既省事,又很容易区分主次构造函数)