1. 程式人生 > >[Scala學習筆記]伴生物件和伴生類

[Scala學習筆記]伴生物件和伴生類

先看如下程式碼:

<span style="font-family:Courier New;font-size:12px;">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)
  }
}</span>
輸出結果為:1


在以上程式碼中,同一個檔案中的同名的class School就是object School的伴生類,而object School就是class School的伴生物件。

類是可以訪問伴生物件中的private屬性的。

因為在scala中沒有類似Java的static關鍵字,所以伴生物件提供了這樣的功能,我們可以把伴生物件看成是當前類(class School)的一個靜態方法成員的集合。