Scala中的伴生类和伴生对象

29 阅读1分钟

伴生类和伴生对象

  1. 类和对象的名字是一样的
  2. 他们在同一个文件中
  3. 特点: 可以访问对方私有(private)属性 4.private 修饰的属性: 在内的外部(在当前的class之外) 无法访问

代码展示:

class Student {
  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)
}

伴生类 和伴生对象 实现 单例模式:一个类只能用一个对象

要求:

1.让构造函数,变成私有的,在类的外部,就无法通过new来创建对象了

2.在伴生对象中创建类的实例,并返回

代码展示:

class Student {
    private val name:String = "小花"
  }
  // 2.在伴生对象中创建类的实例,并返回
  object Student {
    val instance = new Student() // 在伴生对象,可以访问伴生类的私有成员
    def getInstance:Student = {
      instance
    }
  }

  def main(args: Array[String]): Unit = {
val stu1 = Student.getInstance
    val stu2 = Student.getInstance

    println(stu1 == stu2) // true
  }