100%自分の足で栃木県内及び近隣の公園巡り

100%自分の足で栃木県内及び近隣の公園や道の駅に行ってきます。その付近で食べた料理も紹介します。そしてたまにプログラミングやFXもやります。

Kotlin勉強.vo29 プライマリコンストラクタ

こんにちは、レールカラレートです。

今回はプライマリコンストラクタについて説明していきます。

 

前回の勉強

 

www.forties.blog

 

今まではインスタンス化した直後、後から値を代入してましたね。

これが面倒なのでインスタンス化したときに一緒に値をいれてしまうことをコンストラクタと言います。

例として下にコードを書いてみます。

 

コンストラクタ1

 

val a = Test("山田", 20)でインスタンス化してると同時に名前と年齢がセットされています。

ここのカッコの中で最初にある値がコンストラクタのカッコの中の最初の値になります。

今回はカッコの中がStrng型,Int型になってるので、インスタンス化するときに(20, "山田")と逆の順番で入れるとエラーになります。

ですが、変数から書くことによって順番が逆になっても問題なく動きます。

 

コンストラクタ2

 

 

カッコの中がString型、String型とかの場合は順番を間違えてもエラーにならないので気をつけてください。

 

(var name : String = "", var age : Int = 0)とデフォルト値設定してるので、変数から書けばどちらか一方の値だけでも問題なく動きます

 

コンストラクタ3

 

片方だけでも問題なく動いてるのが分かると思います。

 

ではデフォルト値を設定してないとどうなるでしょうか?

(var name : String, var age : Int)だけでデフォルト値を設定していません。

 

コンストラクタ4

 

3行目と4行目でエラーになりました。

これはどちらかしか値を設定してないから、「値がないよ。足りないよ。」とエラーになってます。

デフォルト値がない場合は全て値を入れるようにしましょう。

今回は変数から書きましたが、変数を入れない(”山田”、20)と書いてもエラーになりません。

 

コンストラクタ呼ばれたときに同時に処理をしたい場合に使えるイニシャライザブロックというのがあります。

initという記述で始まり波カッコで書かれた部分がコンストラクタされた後に処理されます。

 

コンストラクタ5

 

何も指示していないのにイニシャライザブロック内です。と表示されているのが分かると思います。

これはコンストラクタされたあとにイニシャライザブロック内が処理されたことによって表示されたということです。

 

ここまでのコンストラクタは「プライマリコンストラクタ」と言います。

これは主要なコンストラクタという意味です。

次回は主要でないコンストラクタのセカンダリコンストラクタの説明をします。

 

 

www.forties.blog