案例 ;辅助构造器

30 阅读1分钟
object Base35 {
  class Triangle(var a:Double = 1.0,var b:Double = 1.0,c:Double = 1.0) {
   // println(s"${a} ${c} ${c}")
    def check(): Boolean = {
      return a + b > c && b + c > a && a + c > b
    }
        def getArea():Double = (
          if(check()){
            var s = (a+b+c)/2
            s = Math.sqrt(s*(s-a)*(s-b)*(s-c))
            return s
          }else {
            println(s"${a}${b}${c} 不能构成一个三角形")
            return -1

    }
  }
  def main (args: Array [String]): Unit = {
  //  print ("请输入第一条边")
   // val a = scala.io.StdIn.readDouble ()
  //  print ("请输入第二条边")
   // val b = scala.io.StdIn.readDouble ()
   // print ("请输入第三条边")
   // val c = scala.io.StdIn.readDouble ()
   // val t1 = new Triangle(a,b,c)
   val t1 = new Triangle(3,4,7)
   println(t1.getArea())

    val t2 = new Triangle(3,4,3)
    println(t2.getArea())
  }

辅助构造器

object Base38 {
  // 多种注册用户的方式 --- 辅助构造器
  // 1. 手机号 + 密码
  // 2. 邮箱 + 密码 + 用户名
  // 姓名
  class Register(val name: String, var email: String, var pwd: String, var phone: String) {

    println("主构造器被调用")
    // 辅助构造器
    // 1. 名称一定是this
    // 2. 在辅助构造器内部,一定要调用主构造器this
    // 3. 可以有多个
    def this(phone: String, pwd: String) {
      this("随机用户xxxxx", "xxxx@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()
  }
}

image.png