构造器
Scala的构造器包含:主构造器和辅助构造器
1、基本语法
/* class 类名(形参列表) { //类体 def this(形式参数){ //辅助构造器,可以有多个 } } */
2、辅助构造方法不能直接构建对象,必须直接或者间接调用主构造方法。
3、构造器调用其他另外的构造器,要求被调用构造器必须提前声明。
例子:
1 object Test2_Constructror { 2 def main(args: Array[String]): Unit = { 3 //括号可以省略 4 val student1 = new Student1 5 student1.Student1() 6 7 val student1_1 = new Student1("wl", 22) 8 } 9 10 } 11 12 class Student1() { 13 //定义属性 14 var name: String = _ 15 var age: Int = _ 16 17 println("1.主构造方法被调用") 18 19 //声明辅助构造方法 20 def this(name: String) { 21 //直接调用主构造器 22 this() 23 println("2.辅助构造方法一被调用") 24 this.name = name 25 println(s"name: $name age: $age") 26 } 27 28 def this(name:String, age: Int) { 29 //调用辅助1,间接调用柱主构造器, 30 this(name) 31 this.age = age 32 println(s"name: $name age: $age") 33 } 34 35 def Student1(): Unit = { 36 println("不是构造方法被调用,而是一般方法被调用") 37 } 38 }

构造器参数
1、未用任何修饰符修饰,这个参数就是一个局部变量。
2、var修饰参数,作为类的成员属性使用,可以修改。
2、val修饰参数,作为类只读属性使用,不能修改。
例子:
1 object Test3_ConstructorParams { 2 def main(args: Array[String]): Unit = { 3 val student2 = new Student2 4 student2.name = "wl" 5 student2.age = 22 6 println(s"student2: name = ${student2.name}, age = ${student2.age}") 7 8 val student3 = new Student3("wll", 23) 9 println(s"student3: name = ${student3.name}, age = ${student3.age}") 10 11 val student4 = new Student4("wwll", 21) 12 student4.printerInfo() 13 } 14 } 15 16 //定义类,无参构造器 17 class Student2 { 18 //单独定义属性 19 var name: String = _ 20 var age: Int = _ 21 22 } 23 24 //上面定义等价于下面定义,Scala推荐这个 25 class Student3(var name:String, var age:Int) 26 27 //主构造器参数无修饰 28 class Student4(name:String, age:Int) { 29 def printerInfo(): Unit ={ 30 println(s"student4: name = $name, age = $age") 31 } 32 }

浙公网安备 33010602011771号