1. private关键字
默认情况下,类的属性在可以通过对象.属性名的方式来获取,如果不希望在类的外部被访问,可以用private来修饰。
构造参数被声明为 private val,表示属性仅在类内部可访问,外部无法直接读取(如注释中的 stu1.name 会编译报错)。
格式:
class 类名{
private 属性
private 方法
}
class Student(){
private val name:String;
}
object Test{
def main(args: Array[String]): Unit = {
val s = new Stuent()
s.name // 错误~~~~
}
}
2. override toString
重写后通过自定义格式返回对象信息,方便打印和调试。
(二)判断类和对象的关系
方法1: 对象.getClass()
方法2:对象.isInstanceof
println("s".getClass())
println(p1.isInstanceof[Person])
(三)重写toString
使用println来输出对象是,他会自动调用toString方法。
在Scala中,要重写一个方法,你需要使用override关键字。对于toString方法,你可以在你的类中定义它,并使用override来指明这是对父类方法的重写。
- 定义toString方法
你可以在类的内部直接定义toString方法。这个方法通常不需要任何参数,并且返回一个String类型的结果。
override def toString: String = {
s"Person(name: $name, age: $age)"
}
3. equeals
基于 name 和 id 判断相等性(忽略 age),利用 Scala 类级别的私有性,同类对象可直接访问彼此的私有属性。
(四)判断两个对象是相等的?
两个对象做比较==时,会自动调用equals方法。我们可以重写equals方法,并自己定义两个对象相等的标准。
如何判断两个对象在业务上是相等的?
重写equals方法的语法格式:
override def equals(obj: Any): Boolean = {
true/false
if (obj == null || obj.getClass != this.getClass) return false
// 类型转换和字段比较
val other = obj.asInstanceOf[Student]
(this.ID == other.ID) && (this.name == other.name)
}