构造器

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 }

 

posted @ 2022-04-27 15:13  小王同学学编程  阅读(70)  评论(0)    收藏  举报
levels of contents