判断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))
}
}
伴生类 和 伴生对象
- 类和对象同名
- 在一个文件中 类就是伴生类,对象就是伴生对象。 特点:可以相互访问对方的私有成员
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)
}
}