scala中的构造器

41 阅读2分钟

构造器是一个函数,在new的时候,被自动调用,它的作用是实例化对象。

new Class() 就是在调用构造器,或者叫调用构造函数。 构造器的作用:生产对象

三角形判断及面积计算

object basic29 {
  class Triangle(a:Double, b: Double, c: Double) {
    //计算面积
    def getArea(): Double ={
      if(check()){
    //能否根据前三条边长,来计算面积?
    var s = (a+b+c)/2
    s= s*(s-a)*(s-b)*(s-c)
    return Math.sqrt(s)//Math.sqrt(4) ==> 2 就是开平方操作
    }else{
        print("不能构成三家乡")
        return 0;
      }
    }
    //检查是否构成三角形
    def check():Boolean={
      //任意两边之和大于第三边
      return (a+b)>c && (a+c)>b && (c+b)>a
    }
  }
  def main(args: Array[String]): Unit = {
// Triangle表示一个三角形类。
// Triangle(边长1,边长2,边长3)
    val t1 = new Triangle(3,4,5)
    println(t1.getArea())//获取面积

    val t2 = new Triangle(1,1,4)
    println(t2.getArea())//获取面积
  }
}

细节注意

object basic30 {
  //可以在两个地方写属性
  //1.构造器的参数内部】
  //2.构造器内部

  //构造器的参数列表
  //1.val 表示不可以被修改的属性
  //2.var 表示可以被修改的属性
  //3.没有修饰符,不是对象的属性,无法访问
  class Triangle(val a:Double,var 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.b=2
    //t.c无法访问
  }
}
object basic31 {
  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("2345678","32444")
    u1.say()
    var u2= new User("23678","32444")
    u2.say()
    var u3= new User("2345678","32444")
    u3.say()
  }
}