构造器

58 阅读1分钟

可以在两个地方写属性

1.构造器的参数列表

2.构造器内部

构造器的参数列表

1.val 表示不可以被修改的属性

2.var 表示可以被修改的属性

3.没有修饰符,不是对象的属性,无法访问


class Triangle(val a:Double,b:Double,c:Double) {
  val d:Int=1
  val e:Int=2
}

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


  //t.c无法访问
}

多个构造器

主构造器:一个,就是class

辅构造器:多个,名称就是this 在内部必须要调用一次主构造器

//主构造器
  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("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()
}