判断两个对象是否相等?
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)
}
}