判断两个对象是相等的

判断this和obj是否相等的逻辑: 姓名和学号都相等,说明这两个学生是同一个人 目标,判断他们是一个人。使用 == 来输出的时候,应该要是true

scala 复制代码
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)
  }
}

单例对象 1.只有一个,不能被new; 2.适用于存放工具方法,常里。

scala 复制代码
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))
  }
}

伴生类 和 伴生对象

  1. 类和对象同名
  2. 在一个文件中 类就是伴生类,对象就是伴生对象。 特点:可以相互访问对方的私有成员
scala 复制代码
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)
  }
}
相关推荐
、BeYourself4 天前
Scala 数据类型
开发语言·后端·scala
howard20054 天前
1.2 Scala变量与数据类型
scala·变量·数据类型·常量
渣渣盟4 天前
Flink定时器实战:处理时间与事件时间
大数据·flink·scala
howard20054 天前
1.1.4 Scala的使用方式
scala·交互方式·文件方式
、BeYourself6 天前
Scala 基础语法
开发语言·scala
渣渣盟10 天前
Flink实现TopN URL访问量统计
大数据·flink·scala
普通网友10 天前
探索Perl在ASIC中的应用:深入标量、数组和哈希的应用
scala·哈希算法·perl
zxfBdd23 天前
Error:scala: No ‘scala-library*.jar‘ in Scala compiler classpath in Scala SDK
大数据·scala·jar
SHeqSpMeS1 个月前
雷达信号处理:运动目标相参积累——Radon-Fourier算法,用于检测运动目标,实现距离和...
scala