こんにちは、レールカラレートです。
今回はプライマリコンストラクタについて説明していきます。
前回の勉強
今まではインスタンス化した直後、後から値を代入してましたね。
これが面倒なのでインスタンス化したときに一緒に値をいれてしまうことをコンストラクタと言います。
例として下にコードを書いてみます。
val a = Test("山田", 20)でインスタンス化してると同時に名前と年齢がセットされています。
ここのカッコの中で最初にある値がコンストラクタのカッコの中の最初の値になります。
今回はカッコの中がStrng型,Int型になってるので、インスタンス化するときに(20, "山田")と逆の順番で入れるとエラーになります。
ですが、変数から書くことによって順番が逆になっても問題なく動きます。
![辣腕上司の甘やかな恋罠【電子書籍】[ 綾瀬麻結 ] 辣腕上司の甘やかな恋罠【電子書籍】[ 綾瀬麻結 ]](https://thumbnail.image.rakuten.co.jp/@0_mall/rakutenkobo-ebooks/cabinet/3391/2000005523391.jpg?_ex=128x128)
- ジャンル: 本・雑誌・コミック > その他
- ショップ: 楽天Kobo電子書籍ストア
- 価格: 1,037円
カッコの中がString型、String型とかの場合は順番を間違えてもエラーにならないので気をつけてください。
(var name : String = "", var age : Int = 0)とデフォルト値設定してるので、変数から書けばどちらか一方の値だけでも問題なく動きます。
片方だけでも問題なく動いてるのが分かると思います。
ではデフォルト値を設定してないとどうなるでしょうか?
(var name : String, var age : Int)だけでデフォルト値を設定していません。
3行目と4行目でエラーになりました。
これはどちらかしか値を設定してないから、「値がないよ。足りないよ。」とエラーになってます。
デフォルト値がない場合は全て値を入れるようにしましょう。
今回は変数から書きましたが、変数を入れない(”山田”、20)と書いてもエラーになりません。
コンストラクタ呼ばれたときに同時に処理をしたい場合に使えるイニシャライザブロックというのがあります。
initという記述で始まり波カッコで書かれた部分がコンストラクタされた後に処理されます。
何も指示していないのにイニシャライザブロック内です。と表示されているのが分かると思います。
これはコンストラクタされたあとにイニシャライザブロック内が処理されたことによって表示されたということです。
ここまでのコンストラクタは「プライマリコンストラクタ」と言います。
これは主要なコンストラクタという意味です。
次回は主要でないコンストラクタのセカンダリコンストラクタの説明をします。