一、语法
class 类名(){
//主构造器
def this(参数:类型) = {
//这里的this是关键字,表示辅助构造器
//参数的个数自己定义
}
def this(参数:类型,参数:类型) = {
}
}
二、注意事项
(1)this是关键字,表示辅助构造器。
(2)辅助构造器可以有多个。
(3)Scala是通过传入参数的不同来区分是哪个辅助构造器的。
(4)辅助构造器必须调用主构造器。
(5)形参不是构造方法属性,不能更改。
三、测试代码
object TestClassInitMethod {
def main(args: Array[String]): Unit = {
var NewStudent: Student = new Student()
var NewStudent_1: Student = new Student("Lxg")
NewStudent.name = "Zxj"
NewStudent.PrintInfo()
var NewStudent1: Student1 = new Student1("Sun", 27)
var NewStudent1_1: Student1 = new Student1("Lxg")
NewStudent1.name = "Zxj"
NewStudent1.PrintInfo()
var NewStudent2: Student2 = new Student2("Moon", 30)
var NewStudent2_1: Student2 = new Student2("Book")
//NewStudent2.name = "Zxj" //形参不是构造方法属性,不能更改
NewStudent2.PrintInfo()
}
}
//无参构造方法
class Student(){
var name: String = "Czg"
var age: Int = 18
println("")
println("========================")
println("无参构造方法的主构造器调用!!!")
println(s"name : ${name} , age : ${age}")
def this(name: String) = {
this()
this.name = name
println("无参构造方法的辅助构造器调用!!!")
println(s"name : ${name} , age : ${age}")
}
def PrintInfo(): Unit = {
println("++++++++++++++++++++++++")
println(s"name : ${name} , age : ${age}")
}
}
//有参构造方法
class Student1( var name: String, var age: Int){
println("")
println("========================")
println("有参构造方法的主构造器调用!!!")
println(s"name : ${name} , age : ${age}")
def this(name: String) = {
this(name, 20)
this.name = name
println("有参构造方法的辅助构造器调用!!!")
println(s"name : ${name} , age : ${age}")
}
def PrintInfo(): Unit = {
println("++++++++++++++++++++++++")
println(s"name : ${name} , age : ${age}")
}
}
//形参构造方法
class Student2(name: String, age: Int){
println("")
println("========================")
println("有形参构造方法的主构造器调用!!!")
println(s"name : ${name} , age : ${age}")
def this(name: String) = {
this(name, 20)
//this.name = name
println("有形参构造方法的辅助构造器调用!!!")
println(s"name : ${name} , age : ${age}")
}
def PrintInfo(): Unit = {
println("++++++++++++++++++++++++")
println(s"name : ${name} , age : ${age}")
}
}
四、测试结果
========================
无参构造方法的主构造器调用!!!
name : Czg , age : 18
========================
无参构造方法的主构造器调用!!!
name : Czg , age : 18
无参构造方法的辅助构造器调用!!!
name : Lxg , age : 18
++++++++++++++++++++++++
name : Zxj , age : 18
========================
有参构造方法的主构造器调用!!!
name : Sun , age : 27
========================
有参构造方法的主构造器调用!!!
name : Lxg , age : 20
有参构造方法的辅助构造器调用!!!
name : Lxg , age : 20
++++++++++++++++++++++++
name : Zxj , age : 27
========================
有形参构造方法的主构造器调用!!!
name : Moon , age : 30
========================
有形参构造方法的主构造器调用!!!
name : Book , age : 20
有形参构造方法的辅助构造器调用!!!
name : Book , age : 20
++++++++++++++++++++++++
name : Moon , age : 30
进程已结束,退出代码0