判断两个对象是相等的

判断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)
  }
}
相关推荐
o丁二黄o2 小时前
语义版本控制:用Gemini镜像站实现合同条款的深度差异分析与风险追踪
javascript·kotlin·scala
与仪共舞3 天前
罗德与施瓦茨 NRP18S|三路二极管射频功率传感器
scala·数据库架构
howard20057 天前
1.8.3 掌握Scala类与对象 - Scala基本骨架方法
scala·基本骨架方法
howard20057 天前
1.9 掌握Scala抽象类与特质
scala·抽象类·特质
howard20058 天前
1.8.2 掌握Scala类与对象 - 单例对象与伴生对象
scala·伴生对象·单例对象
howard200510 天前
1.7.1 掌握Scala函数 - 声明Scala函数
scala·声明scala函数·显式声明·隐式声明
howard200512 天前
1.6.4 掌握Scala数据结构 - 元组
scala·元组
howard200512 天前
1.6.5 掌握Scala数据结构 - 集合
scala·集合
蓝眸少年CY13 天前
Scala - 基础教程
开发语言·后端·scala
howard200513 天前
1.6.3 掌握Scala数据结构 - 映射
scala·可变映射·不可变映射