目次
Kotlin には プライマリコンストラクタ と セカンダリコンストラクタ があります。 子クラスでのコンストラクタの書き方は状況によって書き方が変わってきます。
パターン
- 子クラスでコンストラクタを作らない場合
-
1class Sample: Base()
親クラスの後ろには括弧・引数をつけておきます。
- 子クラスでプライマリコンストラクタを作る場合
-
1class Sample(): Base()
- 子クラスでセカンダリコンストラクタを作る場合
-
123class Sample: Base {constructor(): super() { }}
プライマリコンストラクタを書かずにセカンダリコンストラクタのみを書く場合、 親クラスの名前の後ろにはなにもつけません。 そしてセカンダリコンストラクタはスーパクラスのコンストラクタにデリゲートします。
- 子クラスでプライマリコンストラクタとセカンダリコンストラクタを作る場合
-
123class Sample(): Base() {constructor(x: Int): this() { }}
子クラスのセカンダリコンストラクタは、自分自身のコンストラクタにデリゲートします。
継承できないクラス
親クラスでプライマリコンストラクタを private
にしていていセカンダリコンストラクタがない場合、 継承できません(継承する術をまだ見つけていません)。