掌握Kotlin构造函数的终极指南及示例
构造函数在类对象的初始化中起着非常重要的作用。它是一个特殊的成员函数,没有返回类型。在这个关于Kotlin构造函数的教程中,你将在实例的帮助下详细地探索Kotlin构造函数。
什么是Kotlin构造函数?
构造函数可以被定义为一种成员函数或特殊函数,用于初始化类的属性。当类对象被创建时,它会在任何函数调用之前自动调用构造函数。
例如,每当你在餐馆下订单时,一般的协议是他们会在提供餐点之前为你提供餐具和盘子。所以,这就是每当顾客点东西时自动完成的协议。同样地,每当你创建一个类的对象时,在它进行函数调用之前,构造函数会被自动调用。
在Kotlin中,构造函数的工作有点不同,你将在后面研究。
现在,请了解构造函数的必要性和构造函数的类型。
构造函数的必要性是什么?
类有许多属性,必须被初始化。为了初始化这些属性,你需要一个对象,而构造函数是用来用一个特定的初始值来初始化这个对象。
现在,请看一下构造函数的类型。
在Kotlin中,有两种类型的构造函数。
-
初级构造函数
-
二级构造函数
初级构造器
在Kotlin语言中,构造器是在类头中声明的,不像Java,你必须在类主体中声明构造器。
现在,请看一个例子。
![]()
这里,(val name: String, var roll: Int)是主构造函数。这个主构造函数有两个属性:name和roll。
![]()
这里,S_record是Record类的对象,当它被创建时,它将name和roll分别初始化为Ram和7的值。
上述函数的输出是
![]()
带有初始化块的主构造函数
Kotlin的主构造函数不能包含任何代码,但你必须把初始化逻辑代码放在某个地方。所以你使用init块来放置初始化代码。这个块的语法包含init关键字和代码块。
![]()
正如你在这里看到的,name和roll接受的是Ram和7的值。name和roll的使用都没有var或val,所以它们不是类的属性。
记录类有两个属性,S_name和S_roll;当对象S_record被创建时,init块执行,它将初始化并打印这些属性。
现在是时候进入Kotlin构造函数的下一个话题了。
构造函数中的默认值
你也可以在构造函数中放入默认值。
![]()
这里,在参数中,Somebody和0是构造函数的默认值。如果没有找到某个学生的姓名或学籍,那么只有这些默认值会被打印出来。
![]()
在上面的输出中,你可以看到,对于学生1,即拉姆,你有名字和卷号;这就是为什么名字和卷号都被打印出来,而不是默认值。
对于学生2,你有阿琼的名字,但没有卷号,所以这就是为什么默认值被打印出来代替了卷号。
对于学生3,你没有名字和卷号,所以在这种情况下,默认值被打印在两个地方。
现在,请理解二级构造函数。
二级构造函数
二级构造函数是使用关键字constructor创建的。它用于初始化一组值。在Kotlin中,一个类可以有一个以上的二级构造函数。
现在,请看一个二级构造函数的例子。
![]()
在这里,你可以看到类的对象被创建,并且在二级构造函数中被赋值。
下面是上述例子的输出。
![]()
你也可以在同一个类中使用主构造函数和辅助构造函数,但为此你必须将辅助构造函数授权给主构造函数,这是在this()关键字的帮助下完成的。
![]()
你也可以从另一个二级构造函数调用一个二级构造函数。现在,请看一个例子。
正如你所看到的,有两个二级构造函数,一个有一个参数名称,另一个有两个参数 - 名称和年龄。在 this() 关键字的帮助下,二级构造函数被调用。
下面是上述例子的输出:
![]()
结语
在这个关于Kotlin构造函数的教程中,你看了并理解了Kotlin构造函数的必要性,并了解了什么是Kotlin构造函数。你还了解了构造函数的类型,即一级和二级构造函数。你还了解了构造器和初级构造器中的默认值与初始化器块。
你对这个关于Kotlin构造器的教程有什么问题吗?如果你有,那么你可以把它们放在评论区。我们将帮助你解决你的疑问。