Scala—伴生类和伴生对象

47 阅读1分钟

一、定义

当同名的类和单例对象在同一个源码文件时,这个类称为单例对象的伴生类,对象称为类的伴生对象。

object Person {

}

class Person{

}

代码说明:

1. 类名和对象名必须同名。

2. 必须在同一个源码文件中。

二、访问私有方法

Scala的伴生对象和伴生类的特点:

伴生对象和类的私有private成员可以相互访问。

  • 特定:可以访问对方的私有(private)属性
class Student() {
  //private 修饰的属性,在类的外部(在当前的class之外)无法访问!
  private val name:String  = "小花"

}

object Student {
  def sayHello(stu:Student):Unit = {
    // 在伴生对象中,访问伴生类的私有属性!
    println(s"${stu.name}")
  }

}

def main(args:Array[String]): Unit = {
  val stu1 = new Student()
  // stu1.name 是错误的,无法访问
  Student.sayHello(stu1)
}