📜  Scala构造函数(1)

📅  最后修改于: 2023-12-03 15:34:51.207000             🧑  作者: Mango

Scala构造函数

在Scala中,构造函数是用于创建类实例的方法。与其他编程语言的构造函数不同,Scala中的构造函数可以分为两种类型:主构造函数和辅助构造函数。

主构造函数

主构造函数是在类声明时定义的,并且只能定义一个。它被称为主要的构造函数,因为它是用于创建类实例的唯一方法。主构造函数没有使用def关键字定义,而是直接在类名后加上参数列表来定义。

class Person(name: String, age: Int)

在上面的例子中,Person类有一个主构造函数,它有两个参数:nameage,它们都是字符串和整数类型的参数。

在类中可以使用主构造函数中定义的属性来定义其他方法和属性。

class Person(name: String, age: Int) {
  def canVote: Boolean = age >= 18
  override def toString: String = s"$name ($age)"
}

在上面的例子中,Person类的主构造函数定义了nameage属性,并在类中定义了canVotetoString方法。canVote方法使用主构造函数中定义的age属性来检查一个人是否可以投票。

辅助构造函数

辅助构造函数是额外的构造函数,它们可以使用不同的参数来创建类实例。辅助构造函数必须在类声明内部以this关键字定义,并以不同的参数列表进行定义。辅助构造函数必须调用主构造函数或其他辅助构造函数。

class Person(name: String, age: Int) {
  def this(name: String) = this(name, 0)
}

在上面的例子中,Person类有两个构造函数。一个是主构造函数,它与之前的例子相同,另一个是辅助构造函数,它只有一个name参数,并将age参数默认为0。辅助构造函数使用this关键字调用主构造函数。

可以定义多个辅助构造函数,并可以按不同的方式组合它们。辅助构造函数没有特定的返回类型,因为它们只是用于创建类实例的辅助方法。

总结

Scala中的构造函数是用于创建类实例的方法。主构造函数是在类声明时定义的,并且只能定义一个,而辅助构造函数是额外的构造函数,它们可以使用不同的参数来创建类实例。辅助构造函数必须调用主构造函数或其他辅助构造函数。