判断两个对象是相等的

判断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)
  }
}
相关推荐
小冻梨5 小时前
模式匹配-基础使用
scala
顧棟3 天前
JAVA、SCALA 与尾递归
java·开发语言·scala
深兰科技3 天前
坦桑尼亚与新加坡代表团到访深兰科技,促进AI在多领域的应用落地
java·人工智能·typescript·scala·perl·ai大模型·深兰科技
a程序小傲4 天前
scala中的Array
开发语言·后端·scala
kk哥88994 天前
scala 介绍
开发语言·后端·scala
17315 天前
scala中的Array
scala
满山狗尾草6 天前
map的常规操作
scala
渣渣盟7 天前
Flink实时数据写入Redis实战
大数据·scala·apache
pale_moonlight7 天前
十、Scala应用实践(下)
linux·开发语言·scala
云岫1158 天前
高贵的hasNext带着“迭代器”袭击你的大脑
scala