C#を勉強していると、「クラス」「メソッド」「インスタンス」など色んな用語が出てきます。
今回は、オブジェクト指向で必須の「インスタンス」と「コンストラクタ」について紹介します。
クラスについては、こちらの記事を参考にしてください(本記事で紹介しているプログラム例はこちらの内容をもとにしています)。
インスタンスとは
前回、クラスについて紹介しましたが、クラスはプログラムの中でintやstringなどの型と同様に扱うことができます。
クラスを呼び出すためには、クラスの型の変数を宣言する必要があるのですが、インスタンスを作成することで実現できます!
クラスとインスタンスをセットで覚えておくと良いと思います。
それでは、インスタンスの作成方法とプログラムの例を紹介します。
インスタンスの作成方法
インスタンスでは、クラス型の変数にnew演算子を使ってクラスの実態を入れます。
例えば、Murabitoというクラスを呼び出してmurabit1という変数でMurabitoクラスのメンバを使いたいときはこうです。
intやstringと同じようにMurabitoが型として使われてmurabito1という変数を定義しています。
このように、インスタンスを作成することで、クラスのメンバ(変数やメソッド)を使うことができるようになります。
メンバ変数やメンバメソッドにアクセスする方法は以下です。
・メンバ変数にアクセスするとき:変数名.メンバ変数名
・メンバメソッドにアクセスするとき:変数名.メンバメソッド名
こちらの例では、Murabitoクラスで作成したnameという変数に"たかし"という名前を代入しています。変数名がmurabito1でメンバ変数名がnameですね。
続いて、メソッドを呼び出す例です。Murabitoクラスで作成したDiscussというメソッドを呼び出しています。
プログラム例
こちらの記事で村人クラス(Murabito.cs)を作成しましたので、それを呼び出すProgram.csを作成していきましょう。
■Program.cs
Program.csを開き、Mainメソッドの中に記述していきます。
今回は、murabito1とmurabito2の変数を作成しました。
■結果
Program.csで設定した変数(たかし、しゅん)を入れてMurabito.csで設定したDiscussメソッドとVoteメソッドが呼び出されたことが分かりますね(^^)
これだけでもプログラムは動くのですが、コンストラクタを設定することで、より使いやすいプログラムになるので、紹介させていただきます。
コンストラクタとは
先ほどのプログラム例では、プログラムの中に直書きでメンバ変数を書いています。ただ、メンバ変数が多くなると代入が大変になりますよね。そこで、インスタンスを作ると同時にメンバ変数へ初期値を代入する仕組みがあり、それを「コンストラクタ」と呼びます。先ほどのプログラムにコンストラクタを作成していきましょう。
コンストラクタの作成方法
呼び出したいクラスの中に、コンストラクタを作成します。
コンストラクタの名前はクラスと同じにし、先頭にpublicをつけます。
「戻り値の型(voidなど)」は書かないので注意してください。
例では、MurabitoクラスのコンストラクタをMurabito.csに記述しています。初期設定として、nameとhpに値を代入をします。
インスタンスの例ではProgram.csでnameに"たかし"と代入していましたが、コンストラクタで設定したので、その記述は不要になります。
これで実行すると、常に名前が「たかし」になってしまいます。必要に応じて名前と体力を代入するため、引数付きのコンストラクタを作成しましょう。
引数付きのコンストラクタ作成方法
先ほど作成したコンストラクタの中に引数を持たせます。こちらの例では、name とhpの引数を設定しました。()の中にそれぞれの変数をセットすればよいですね。
同様に、Program.csのインスタンスも引数を設定します。
設定は以上です(^^)
プログラム例
上記を踏まえて各プログラム例を紹介します。
■Murabito.cs
■Program.cs
ひとこと
今回はインスタンスとコンストラクタについて紹介させていただきました。色んな用語が出てきますが、実際に手を動かしてプログラムを作っていくことで、理解が深まり定着に繋がると思います!
今回の説明は「確かな力が身につくC# 「超」入門」を参考にさせていただきましたが、「もっと前から読んでおきたかった!」と痛感しています、、もし、C#について学び始めたという方は是非参考にしてみてください!(2020年7月に出版された新書です^^)
☆C#入門としてその他にも紹介しておりますので、是非参考にしてください☆