[Scala学习笔记]伴生对象和伴生类

先看如下代码:

package com.joseph.test

/**
 * 伴生类和伴生对象
 */

/**
 * 伴生类
 */
class School {
  val id = School.incrementId
}

/**
 * 伴生对象
 */
object School {
  private var studentId = 0
  private def incrementId = {
    studentId += 1
    studentId
  }
}

object Test {
  def main(args: Array[String]): Unit = {
    var school = new School
    println(school.id)
  }
}
输出结果为:1


在以上代码中,同一个文件中的同名的class School就是object School的伴生类,而object School就是class School的伴生对象。

类是可以访问伴生对象中的private属性的。

因为在scala中没有类似Java的static关键字,所以伴生对象提供了这样的功能,我们可以把伴生对象看成是当前类(class School)的一个静态方法成员的集合。


你可能感兴趣的:(Scala)