scala中访问控制与方法重写

18 阅读1分钟
  1. private 的作用是什么?

在 Java 等面向对象编程语言中,private 是一种访问修饰符,主要作用是限制成员(包括成员变量和成员方法)的访问范围,具体表现为:

(1) 仅当前类可访问:被 private 修饰的成员,只能在其所在的类内部被直接访问或调用,类外部(包括子类、其他类)都无法直接访问。

(2) 封装性的核心体现:通过 private 隐藏类的内部实现细节(如敏感数据、不希望外部直接修改的变量),外部只能通过类提供的公共方法(public 方法)间接操作这些成员,从而保证数据的安全性和一致性。

  1. println (对象) 时,会自动调用对象的 toString 方法? 当使用 println(对象) 时,会自动调用该对象的 toString()  方法。
  2. 使用 == 判断两个对象是否相等的时候,会调用equals()方法?

两个对象做比较 == 时,会自动调用 equals 方法。我已定义两个对象相等的标准。

判断两个对象是相等的?


package l1

object l01 {
  class Student(var name:String, var id:String,var age:Int) {
    override def equals(obj: Any): Boolean ={
      //equals 相等
      println("调用了eguals..")
      println(this,obj)

      val other=obj.asInstanceOf[Student]
      //判断this和obj是否相等的逻辑:姓名和学号都相等,说明这两个学习是同一个人
      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("小花","20230013",18)
    //目标,判断他们是一个人。使用==来输出的时候,应该要是true
    println(stu1==stu2)//true
    println(stu1==stu3)//false

  }


}