1. ホーム
  2. scala

[解決済み] Scala のコンストラクタのオーバーロード?

2022-05-26 06:05:13

質問

Scalaでオーバーロードされたコンストラクタはどのように提供されますか?

どのように解決するのですか?

Scala の補助コンストラクタは、最初の動作として(landon9720 の回答のように)一次コンストラクタか、同じクラスの別の補助コンストラクタを呼び出す必要があることを明示的に言及する価値があります。Java のように明示的または暗黙的にスーパークラスのコンストラクタを呼び出すことはできません。これにより、1 次コンストラクタがクラスへの唯一の入口であることが保証されます。

class Foo(x: Int, y: Int, z: String) {  
  // default y parameter to 0  
  def this(x: Int, z: String) = this(x, 0, z)   
  // default x & y parameters to 0
  // calls previous auxiliary constructor which calls the primary constructor  
  def this(z: String) = this(0, z);   
}