Scalaでクラスを継承したときのコンストラクタのパラメータ
newするときに渡す引数は、子クラス定義時も親クラス名といっしょに指定しないといけない。
class Hoge(a: Int) class Fuga extends Hoge // error: not enough arguments for constructor Hoge: (a: Int)Hoge. class Fuga(a: Int) extends Hoge(a) // ok // Fugaの引数がHogeに渡される
デフォルト引数が親クラスで設定されているときは、指定しなくてもいい。
あるいは、子クラス定義の時に変更できる。
class Bar(val a: Int = 123, val b: Int = 234) class Baz() extends Bar val baz = new Baz() baz.a //=> 123 baz.b //=> 234 class Foo() extends Bar(b = 345) // 名前付き引数で渡す val foo = new Foo() foo.a //=> 123 foo.b //=> 345