scala的构造函数

37 阅读2分钟

1.主构造函数的参数

(1)构造器的参数列表

1. var 是可以修改的属性

2. val 是不可以修改的属性

3.而没有使用val或者var修饰的,不是属性

(不用val|var定义,在类外不可以访问 内部只读,不可改写)

代码:

object basic25 {
  //可以在两个地方写属性
  // 1.构造器的参数列表
  // 2.构造器内部
  
  // 构造器的参数列表:
  //1.val 表示不可以被修改的属性
  //2. var 表示可以被修改的属性
  //3. 没有修改符,不是对象的属性,无法访问
  class Triangle(val a:Double, var b:Double, var c:Double) {
    
    val d:Int = 1
    val e:Int = 2
    
  }

  def main(args: Array[String]): Unit = {
    val t = new Triangle(1,2,3)
    t.b = 2
    
    //t,c 无法访问
  }
}

2.辅助构造函数

(1)辅助构造器的作用

1.提供多种初始化方式:

辅助构造器允许类提供多种初始化选项,使得创建对象时更加灵活。

2.简化对象创建:

通过定义多个辅助构造器,您可以简化对象的创建过程,避免在主构造器中处理过多的参数。

3.调用主构造器:

辅助构造器可以通过 this 关键字调用主构造器,从而确保所有初始化

案列代码:

object basic26 {
  /**
   * 写过个构造器
   *
   * 构造器的作用:生产对象
   * 支持多种创建对象的方式 ==== 在网站注册用户时,可以有多种注册方式:手机号,微信号,邮箱号
   *
   */

  class User(val phone:String, var pwd:String) {
    var email:String = ""
    var name:String = ""

    //辅构造器
    def this(email:String, name:String, pwd:String){
      //调用一次主构造器
      this("",pwd)
      this.name = name
      this.email = email
    }

    def this(email: String, name: String, pwd: String, phone:String){
      //再调用一次主构造器
      this(phone,pwd)
      //再对其他的属性赋值
      this.name = name
      this.email = email
    }

    def say():Unit = {
      println(s"以下是我的信息:")
      println(s"姓名:${name}")
      println(s"手机号:${phone}")
      println(s"邮箱:${email}")
      println(s"密码:${pwd}")
    }
  }

  def main(args: Array[String]): Unit = {

    var u1 = new User("123456789","02031119")
    u1.say()

    var u2 =new User("060203@qq.com","小花","123456")
    u2.say()

    var u3 =new User("060203@qq.com","小花","123456","02031119")
    u3.say()
  }
}