类方法

42 阅读1分钟

equals方法

String的equals方法是重写过的,比较两个对象的具体值。

package level02

object scala02 {
  //equals相等
  class Student(var name:String,var id:String,var age:Int){
    override def equals(obj: Any): Boolean = {

      println("调用了equals")

      println(this,obj)
      //判断this和obj是否相等的逻辑:名字和学号都相等,说明这两个学生是同一个人
      val  other = obj.asInstanceOf[Student]
      this.name == other.name && this.id == other.id
    }
  }

  def main(args: Array[String]): Unit = {

    val stu1 = new Student("小花","456684",18)
    val stu2 = new Student("小花","456684",18)
    val stu3 = new Student("小花","456684",18)
    //目标,判断他们是一个人。使用 == 来输出的时候,应该要是true
    println(stu1==stu2)
    println(stu1==stu3)
  }
}

单例对象

package level02

object scala03 {
  //object对象名{
  //属性;
  //方法;....
  //}
  //单例对象
  //只有一个,不能被new
  //适用于存放工具方法,常量
  object MyTool {
    val PI = 3.14

    def Area(r:Double):Double = {
      PI * r * r
    }
  }
  def main(args: Array[String]): Unit = {
    //对象,属性名
    //对象,方法名
    println(MyTool.PI)
    println(MyTool.Area(10))
  }
}

伴生类 和 伴生对象

package level02

object scala04 {
  /***
   * 伴生类 和 伴生对象
   * 1.类和对象同名
   * 2.在一个文件中
   * 
   * 类就是伴生类 对象就是伴生对象
   * 
   * 特点:可以相互访问对方的私有成员
   */
  class Student() {
    //private 修饰的属性,无法在类的外部被访问
    private val hobby = "打游戏"
  }
  
  object Student {
    def introduce(stu:Student):Unit = {
      println(s"我的爱好是:${stu.hobby}")
    }
  }
  def main(args: Array[String]): Unit = {
    val stu1 = new Student()
    //stu1.hobby //无法访问私有属性
    Student.introduce(stu1)
  }
}

2025-11-3 10-28-44.JPG