📅  最后修改于: 2023-12-03 15:34:51.207000             🧑  作者: Mango
在Scala中,构造函数是用于创建类实例的方法。与其他编程语言的构造函数不同,Scala中的构造函数可以分为两种类型:主构造函数和辅助构造函数。
主构造函数是在类声明时定义的,并且只能定义一个。它被称为主要的构造函数,因为它是用于创建类实例的唯一方法。主构造函数没有使用def
关键字定义,而是直接在类名后加上参数列表来定义。
class Person(name: String, age: Int)
在上面的例子中,Person
类有一个主构造函数,它有两个参数:name
和age
,它们都是字符串和整数类型的参数。
在类中可以使用主构造函数中定义的属性来定义其他方法和属性。
class Person(name: String, age: Int) {
def canVote: Boolean = age >= 18
override def toString: String = s"$name ($age)"
}
在上面的例子中,Person
类的主构造函数定义了name
和age
属性,并在类中定义了canVote
和toString
方法。canVote
方法使用主构造函数中定义的age
属性来检查一个人是否可以投票。
辅助构造函数是额外的构造函数,它们可以使用不同的参数来创建类实例。辅助构造函数必须在类声明内部以this
关键字定义,并以不同的参数列表进行定义。辅助构造函数必须调用主构造函数或其他辅助构造函数。
class Person(name: String, age: Int) {
def this(name: String) = this(name, 0)
}
在上面的例子中,Person
类有两个构造函数。一个是主构造函数,它与之前的例子相同,另一个是辅助构造函数,它只有一个name
参数,并将age
参数默认为0
。辅助构造函数使用this
关键字调用主构造函数。
可以定义多个辅助构造函数,并可以按不同的方式组合它们。辅助构造函数没有特定的返回类型,因为它们只是用于创建类实例的辅助方法。
Scala中的构造函数是用于创建类实例的方法。主构造函数是在类声明时定义的,并且只能定义一个,而辅助构造函数是额外的构造函数,它们可以使用不同的参数来创建类实例。辅助构造函数必须调用主构造函数或其他辅助构造函数。