11.构造器的使用

36 阅读1分钟

构造器的默认值

屏幕截图 2025-09-28 103520.png

代码如下:
object Base38 {
class Student(var name:String,var age:Int,var gender:String = "男",var nav:String = "汉族") {
  def say(): Unit = {
    println(s"${name},${age},${gender},${nav}")
    }
  }

  def main(args: Array[String]): Unit = {
    var s1 = new Student("小明",19)
    s1.say()
    var s2 = new Student("小花",18,"女","回族")
    s2.say()
  }


}
结果:
        小明,19,男,汉族
        小花,18,女,回族
        
构造器中的参数的类型
        1.val定义的属性,不能修改
        2.var定义的属性,可以修改
        3.没有val,也没有var的,不是对象的属性,不能使用语法来访问
代码如下:
object Base38 {
class Student(var name:String,var age:Int,var gender:String = "男",var nav:String = "汉族") {
  def say(): Unit = {
    println(s"${name},${age},${gender},${nav}")
    }
  }

  def main(args: Array[String]): Unit = {
    var s1 = new Student("小明",19)
    s1.say()
    var s2 = new Student("小花",18,"女","回族")
    s2.say()
  }
}
结果:
        小明,19,男,汉族
        小花,18,女,回族

辅助构造器及调用

屏幕截图 2025-09-28 124723.png

代码如下:
class Register(val name: String, var email: String, var pwd: String, var phone: String) {
  println("主构造器被调用")

  def this(phone: String, pwd: String) {
    this("随机用户xxxxxx", "xxxxx@qq.com", pwd, phone) // 调用主构造器
    println("辅助构造器被调用")
  }
  def this(email: String, pwd: String, name: String) {
    this(name, email, pwd, "1360000000") // 调用主构造器
    println("辅助构造器被调用")
  }
  def say(): Unit = {
    println(s"姓名: ${name},邮箱: ${email}, 密码: ${pwd}, 手机号: ${phone}")
  }
}
def main(args: Array[String]): Unit = {
  // val r1 = new Register("小明", "123123@qq.com", "123456", "13617885566")
  // 调用辅助构造器
  val r1 = new Register("13617885566", "123456")
  val r2 = new Register("9456651@qq.com", "123456", "小明")

  r1.say()
  r2.say()
}