📅  最后修改于: 2023-12-03 15:10:24.424000             🧑  作者: Mango
Scala是一种高级编程语言,它混合了面向对象编程和函数式编程的最佳实践。 当我们创建一个Scala类时,主构造函数控制这个类的创建方式。
在Scala中,创建类的语法是:
class ClassName constructor(arguments) {
// class body
}
构造函数是class头部的“(arguments)”部分,它定义了类实例化时要使用的参数。 有两种类型的构造函数:主构造函数和附属构造函数。
主构造函数可以使用以下两种方式声明:
// 方式1:类头部声明
class MyClass(val arg1: String, var arg2: Int) {
// class body
}
// 方式2:直接在类头部使用小括号声明主构造函数
class MyClass(val arg1: String, var arg2: Int)(val arg3: Boolean) {
// class body
}
主构造函数参数可以是val,var或没有修饰符:
以下是一个使用val和var的示例:
class Person(val name: String, var age: Int) {
println("Person object was created")
override def toString: String = s"$name ($age)"
}
val john = new Person("john", 30)
println(john.name) // john
john.age = 31
println(john) // john (31)
该代码打印以下内容:
Person object was created
john
john (31)
除了主构造函数外,Scala还支持附属构造函数的概念。 附加构造函数是在类中声明的额外构造函数。它们使用不同的参数组来实例化类,但它们必须调用主构造函数或另一个附属构造函数。
以下是一个使用附属构造函数的示例:
class Person(val name: String, var age: Int) {
def this(name: String) {
this(name, 0)
}
override def toString: String = s"$name ($age)"
}
val john = new Person("john", 30)
val jane = new Person("jane")
println(john) // john (30)
println(jane) // jane (0)
该代码输出以下内容:
john (30)
jane (0)
Scala的主构造函数允许您定义类的实例化方式。 它还允许您通过使用val,var或不带修饰符的参数来控制类的可变性。 附加构造函数允许您使用不同的参数来实例化相同的类。