scala类与对象

46 阅读2分钟

Person就是一个类;理解为变量名。

首字母是大写的!

类名一般来说是名词

val 不可修改

var 可修改

object w23 {
 
  class Person(){}

  class Student(){
    var name:String ="神"
    var age:Int = 18

  }



  var name:String ="神"
  var age:Int = 18

  def main(args: Array[String]): Unit = {
    val p1 = new Person()

    val s1 = new Student()
    println(s1.name)
    s1.name="xxx"
    println(s1.name)
  }

}

object w24 {
  class Student() {
    var name:String="xxx"
    var age:Int = 18


    def say(): Unit = {
      println(s"${name},${age}")
    }

  }

  def main(args: Array[String]): Unit = {
    val s1=new Student()
    s1.say()
  }
}
object w26 {
  class Student(var name:String ="xxx", var age:Int =18) {
    println("Student.....被调用了....")
    //1.类的属性 - 变量
    //var name:String ="xxx",
    // var age:Int =18

    //2.类的方法 -函数
    def say(): Unit = {
      println(s"${name},${age}")
    }

    def main(args: Array[String]): Unit = {
      val s1 =new Student()
      s1.say()


      val s2 =new Student("####,19")
      s2.say()
    }



  }


}

object w25 {
  class Triangle(var a: Double = 1.0, var b: Double = 1.0, var c: Double = 1.0) {
    println(s"${a} ${b} ${c}")
    // 检查是否构成三角形,结果是Boolean
    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 = {
   // println("请输入第一条边")
    //val a = scala.io.StdIn.readDouble()
    //println("请输入第二条边")
    //val b = scala.io.StdIn.readDouble()
    //println("请输入第三条边")
   // val c = scala.io.StdIn.readDouble()
    val t1 = new Triangle(3, 4, 7)
    println(t1.getArea())

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

  }

}

object w26 {
  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 s0 = new Student() // gender 和 nav 使用默认值
    var s1 = new Student("小明", 19) // gender 和 nav 使用默认值
    s1.say()

    var s2 = new Student("小花", 18, "女", "回族")
    s2.say()
  }
}

object w28 {
  // 多种注册用户的方式 --- 辅助构造器
  // 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("随机用户xxxx", "xxxx@qq.com", pwd, phone) // 调用主构造器
      println("辅助构造器被调用")
    }
    def this(email: String, pwd: String, name: String) {
      this(name, email, pwd, "13600000000") // 调用主构造器
      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()
  }

}