类和对象

38 阅读1分钟

回顾

辅助构造器的作用

1.提供多种初始化方式:

辅助构造器允许类提供多种初始化选项,使得创建对象时更加灵活。

2.简化对象创建:

通过定义多个辅助构造器,您可以简化对象的创建过程,避免在主构造器中处理过多的参数。

3.调用主构造器:

辅助构造器可以通过 this 关键字调用主构造器,从而确保所有初始化逻辑都集中在主构造器中。

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()
  }
}

scala中访问控制与方法重写

private:私有的。不对外公布,在外面不可以访问。在家之外的地方,不可以被别人知道...

object class02 {
  class Student(var name:String,val age:Int) {
    private val hobbies:String="阿萨德客户"

    private  def hobby():Unit={
      println(s"${hobbies}")
    }
    
    def sayHi():Unit={
      println(s"${name},${age}")

      hobby()//在类的内部,可以调用私有方法
    }
  }
  def main(args: Array[String]): Unit = {
    val stu1 = new Student("小花",18)
    stu1.sayHi()

  }
}

判断类和对像的关系

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)
//注意:[],结果是boolen值
    println(stu.isInstanceOf[Student])
    println(stu.isInstanceOf[Teacher])
  }
}

目标:判断两个student对象是否相等的依据是:学号相同并且姓名相同

判断条件可以自己来确定

object class05 {
  class Student(val id:String, var name:String,val age:Int) {
  //改写equals方法
  //在使用==判断的时候,会自动调用
  //如果返回TRUE,则相等
  //若返回FALSE,则不相等
    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("202410","小花",18)
    val stu2 = new Student("202410","小花",19)
    if(stu1 == stu2){
      println("他们是同一个人")
    }else{
      println("不是同一个人")
    }
  }
}

链式

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

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

  }
}