scala的tostring。封装使用方法

21 阅读1分钟

二、方法重写:让对象打印更友好 ——toString 方法

默认情况下,直接打印 Scala 对象会输出类似xxx@xxxxxx的 “不友好” 信息。通过重写 toString 方法,可以自定义对象的打印格式。

以下是重写 toString 的示例:

package level02

object class03 {
  class Student(var name: String, var age: Int) {
    // 重写toString方法,自定义对象的打印格式
    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)  // 输出:Student(小花, 18)
    println(stu2)  // 输出:Student(小明, 19)
  }
}
  • 默认行为:若不重写toString,打印对象会输出 “类名 + 哈希值”(如level02.class03$Student@2133c8f8)。
  • 重写逻辑:用override关键字重写toString,返回一个包含对象属性的字符串,让打印结果更直观、友好。

三、封装:隐藏细节,暴露接口

封装是面向对象的核心特性之一,通过private修饰符隐藏类的内部细节(如私有变量、私有方法),仅暴露公共方法供外部调用,从而保证数据安全与代码模块化。

以下是体现封装特性的示例:

object kjlkjkl {
  class Student(var name: String, var age: Int) {
    // 私有变量:仅类内部可访问
    private val phoneNum: String = "136xxxxx"
    // 私有方法:仅类内部可调用
    private def hobby(): Unit = {
      println(s"我的个人爱好是隐私信息.....${phoneNum}")
    }

    // 公共方法:暴露给外部调用
    def sayHello(): Unit = {
      println(s"我是${name}, 今年${age}")
      hobby()  // 类内部调用私有方法
    }
  }

  def main(args: Array[String]): Unit = {
    val stu = new Student("小花", 18)
    stu.sayHello()
    /* 输出:
       我是小花, 今年18
       我的个人爱好是隐私信息.....136xxxxx
    */
  }
}
  • 私有成员phoneNum(私有变量)和hobby()(私有方法)被private修饰,外部代码无法直接访问。
  • 公共接口sayHello()是公共方法,外部通过它既能获取对象的公开信息(姓名、年龄),又能间接触发内部逻辑(调用私有方法hobby()),实现了 “隐藏细节,暴露必要接口” 的封装思想。