类和对象

76 阅读1分钟

Class类

创建对象 调用对象的方法 修改对象的属性

package level02

class Student(var name:String, val age:Int) {
  def sayHi():Unit = {
    println(s"我是${name},我今年${age}")
  }
}
object class01 {
  def main(args: Array[String]): Unit = {
    val stu1 = new Student("小花",18)
    stu1.sayHi()
    stu1.name = "小花花"
    stu1.sayHi()
  }

}

构造函数

package level02

class Student(var name:String, val age:Int) {
  println("student......")
  def sayHi():Unit = {
    println(s"我是${name},我今年${age}")
  }
}
object class01 {
  def main(args: Array[String]): Unit = {
    val stu1 = new Student("小花",18)
    stu1.sayHi()
    stu1.name = "小花花"
    stu1.sayHi()
  }

}

辅助构造函数

package level02

class Student(var name:String, val age:Int) {
  println("student......")
  def this() = {
    this("未知的",18)
    println("辅助构造器被调用了...")
  }
  def this(age:Int) = {
    this("未知的",age)
  }
  def sayHi():Unit = {
    println(s"我是${name},我今年${age}")
  }
}
object class01 {
  def main(args: Array[String]): Unit = {
    val stu1 = new Student("小花",18)
    val stu2 = new Student()
    val stu3 = new Student(20)
    stu1.sayHi()
    stu2.sayHi()
    stu3.sayHi()
  }

}

判断类和对象的关系

方式一:对象getClass 方式二:对象isInstanceof[类]

package level02

object Class03 {

  class Student() {}
  class Teacher() {}

  def main(args:Array[String]): Unit = {
    val age:Int = 1
    val stu = new Student()

    println(stu.getClass)
    println(age.getClass)

    println(stu.isInstanceOf[Student])
    println(stu.isInstanceOf[Teacher])
  }
}

改进类的代码

package level02

object Class04 {
 class Student(var name:String,var age:Int) {
   override def toString: String = s"姓名:${name}"
 }
  def main(args:Array[String]): Unit = {
    val stu1 = new Student("小花",18)
    val stu2 = new Student("小明",18)

    println(stu1)
    println(stu2)
  }
}
package level02

object Class05 {
  class Student(val id:String,val name:String,val age:Int) {
    override def equals(obj:Any): Boolean = {
      println(s"比较是否相等...${this.id},${this.name},")

      val other = obj.asInstanceOf[Student]
      this.id == other.id && this.name == other.name
    }
  }
  def main(args:Array[String]): Unit = {
    val stu1 = new Student("2024101001","小花",18)
    val stu2 = new Student("2024101001","小花",19)
    if(stu1 == stu2){
      println("他们是同一个人")
    }else{
      println("不是同一个人")
    }
  }
}

链式

package level02

object Class06 {
  class Student() {
    def sayHi():Student = {
      println("sayhi")
      this
    }
    def sayHello():Student = {
      println("sayHello")
      this
    }
  }

  def main(arg:Array[String]):Unit = {
    val stu1 = new Student()
    stu1.sayHi().sayHello()
  }
}