位置:首页 > Scala > 如何判断两个对象是否相等的方法与区别

如何判断两个对象是否相等的方法与区别

时间:2026-08-15  |  作者:夜鞌不睡  |  阅读:0

怎么判断 this 和 obj 是不是相等?逻辑其实很直接:只要姓名和学号都一致,就可以认定这两个学生表示的是同一个人。

目标也很明确,就是判断他们是不是同一个人。因此,用 == 输出结果时,预期就应该是 true

判断两个对象是相等的
            <!----></a> <!---->

package level

object class04 {
  class Student(var name:String,var id:String, var age:Int) {
    // equals 相等
    override def equals(obj:Any): Boolean = {
      println("调用了equals")

      println(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("小花","20230012",18)
    val stu2=new Student("小花","20230012",18)
    val stu3=new Student("小花","20230012",18)
    println(stu1==stu2)
    println(stu1==stu3)
  }
}

单例对象的特点

单例对象的特点其实很直白。

  • 整个运行过程中只会有一个实例,不能通过 new 的方式随意创建。
  • 很适合用来集中存放工具方法,实际开发里也很常见。
package level

object class05 {
  // object 对象名{
  //    属性:
  //    方法;。。。。
  //  }
  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 class06 {
  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)
  }
}

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多