Scala的构造器

49 阅读1分钟

基本概念

scala辅助构造器的一些特点

  1. val 表示不可以被修改的属性
  2. var 表示可以被修改的属性
  3. 没有修饰符,不是对象的属性,无法访问
  4. 写属性的地方:构造器的参数列表和构造器内部
object basic22 {
  //可以在两个地方写属性
  //1. 构造器的参数列表
  //2. 构造器内部

  //构造器的参数列表
  //1. val 表示不可以被修改的属性
  //2. var 表示可以被修改的属性
  //3. 没有修饰符,不是对象的属性,无法访问
  class Triangle(val a:Double,var b:Double,c:Double) {

    val d:Int=1
    var e:Int=2
  }

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

实例

object basic23 {
  /**
   * 写个构造器
   *
   * 构造器的作用:生产对象
   * 支持多种创建对象的方式 ==== 在网站上面注册用户的时候,可以有多种方式:手机号,微信号,邮箱号
   */
  class User(val phone:String,var pwd:String) {
    var email:String=""
    var name:String=""

    //辅构造器
    def this(emal: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("13617891234","123456")
    u1.say()

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

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