Scala/クラス
class ChecksumAccumulator {〜} // シングルトンオブジェクトのコンパニオンクラスと呼ばれる。
object ChecksumAccumulator {〜} // クラスと同じ名前を持つとき、そのクラスのコンパニオンオブジェクトと呼ぶ。
クラスとコンパニオンオブジェクトは同じソースファイルで定義しなければならない。
クラスとそのコンパニオンオブジェクトは、互いの非公開メンバーにアクセスできる。
class Rational(n: Int, d: Int) { // このnやdはクラスパラメータと呼ばれる
require(d != 0) // オブジェクト構築時の値チェック。渡された値がfalseならIllegalArgumentExceptionになる。
val denom: Int = d // クラスパラメータをpublicに参照したい場合はフィールドを追加する
}
Scalaコンパイラーは、クラスパラメータと同じ個数のパラメーターをとる基本コンストラクターを生成する。
Scalaコンパイラーは、クラス本体に書かれたフィールド/メソッド定義部以外のコードを、基本コンストラクターにコンパイルする。
class Rational(n: Int, d: Int) {
println("") // 基本コンストラクターにコンパイルされるため、インスタンス作成時に実行される
require(d != 0) // オブジェクト構築時の値チェック。渡された値がfalseならIllegalArgumentExceptionになる。
def this(n: Int) = this(n, 1) // 基本コンストラクター以外のコンストラクターを補助コンストラクターと呼ぶ。
}