scala

28 阅读1分钟

判断两个对象是否相等?

package level02

object class04 {
//equals 相等
  class Student(var name:String,var age:Int,var id:String) {
  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("小花",18,"1245987")
   val stu2 = new Student("小花",18,"1245987")
   val stu3 = new Student("小花",19,"2356897")
   //目标,判断他们是同一个人。使用==来输出的时候 应该是true
   println(stu1 == stu2)
   println(stu1 == stu3)
  }
}
package level02

object class05 {
  //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 class06 {
  //半生类和半生类对象
  //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)
  }
}