scala中访问控制与方法重写

31 阅读1分钟

private

默认情况下,类的属性在可以通过对象.属性名的方式来获取,如果不希望在类的外部被访问,可以用private来修饰。

格式:

屏幕截图 2025-10-29 154400.png

练习:

kotlin
 体验AI代码助手
 代码解读
复制代码
package levelo2

object class02 {
  // private:私人的,私有的
  // private 修饰之后,它是私有的,在类的外部无法被访问。只能在类的内部被访问
  class student(var name:String,var age:Int) {
    // 私有属性
    private val phoneNum:String ="136xxxxxx00"
    // 私有方法
   private def hobby():Unit={
      println(s"我的个人爱好是隐私信息.....${phoneNum}.")
    }
    def sayHello():Unit={
      println(s"我是${name},今年${age}")

      hobby()  // 在类的内部,可以访问私有成员
    }
  }

  def main(args: Array[String]): Unit = {
    // 实例化类的对象.stu
    // new 的时候 就会自动调用一次构造函数

    val stu = new student("小花",18)
    stu.sayHello()
  }
}

结果:

屏幕截图 2025-10-29 153847.png

在Scala中,要重写一个方法,你需要使用override关键字。对于toString方法,你可以在你的类中定义它,并使用override来指明这是对父类方法的重写。

 

定义toString方法

你可以在类的内部直接定义toString方法。这个方法通常不需要任何参数,并且返回一个String类型的结果。

练习:

kotlin
 体验AI代码助手
 代码解读
复制代码
package levelo2
// 目标:让对象被打印的时候,输出信息更友好一点
// 做法:重写toString方法
// 在使用println输出一个对象的时候,会自动调用toString方法,并输出这个方法的返回值!

object class03 {
  class  student(var name:String,var age :Int) {

    override def toString: String = s"student(${name},${age})"
  }

  def main(args: Array[String]): Unit = {
    val stu1 = new student("小花",18)
    val stu2 = new student("小明",19)
    println(stu1)
    println(stu2)
  }
}

结果:

屏幕截图 2025-10-29 155110.png