技術のメモ箱

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) // 基本コンストラクター以外のコンストラクターを補助コンストラクターと呼ぶ。
}
pagetop