equals方法
String的equals方法是重写过的,比较两个对象的具体值。
package level02
object scala02 {
//equals相等
class Student(var name:String,var id:String,var age:Int){
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("小花","456684",18)
val stu2 = new Student("小花","456684",18)
val stu3 = new Student("小花","456684",18)
//目标,判断他们是一个人。使用 == 来输出的时候,应该要是true
println(stu1==stu2)
println(stu1==stu3)
}
}
单例对象
package level02
object scala03 {
//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 scala04 {
/***
* 伴生类 和 伴生对象
* 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)
}
}