半人前プログラマーの技術談議

開発した物と,C#を入門者向けに解説した記事を書いています!

【C# オブジェクト指向】コンストラクタ static 配列 part2-2

calendar

reload

こんにちは!シロウです!

引き続きオブジェクト指向について解説していきます!

コンストラクタ

前回はインスタンス変数まで解説しました.

しかし,インスタンス変数に代入する命令文を何度も書いていては非常に手間です.

プログラムも見辛くなってしまいます.

 

それを解消するのが,コンストラクタです.

コンストラクタは,インスタンスが生成されるときに自動的に実行される命令を記述したものです.

コンストラクタの宣言は次のように記述します.

 

例えば,このように記述します.

thisは自分自身を指し示すキーワードで,クラスのインスタンス変数や,メソッドを指し示す時に使います.

※thisは省略する事もできますが,メソッドの仮引数などと区別する為に付けた方がいいです.特にコンストラクタでは付けましょう.また,今回のようにインスタンス変数名と仮引数名が同じ場合は省略することが出来ません.

コンストラクタの宣言ができたので,インスタンスを生成する時に呼び出してみましょう.

記述は次のようになります.

前回のインスタンス生成に実引数が付いただけです.

例えば,このように記述します.

実際に使うとこのようになります.

ソースコード

 

実行結果

f:id:pokoshirou:20181011090708p:plain

 

クラス変数とクラスメソッド

クラス変数

クラスのフィールドは,インスタンスを生成した時に,インスタンス変数として使う事ができました.

クラス変数は,インスタンスを生成しなくても使用できるフィールド(変数)です.

クラス変数の宣言は先頭に static キーワードを付けます.

クラス変数を参照するときには,クラス名に「.」を付けます.

例えば,このように記述します.

※クラス変数も,自分のクラス内での参照であれば,クラス名を省略することが出来ます.こちらは省略する事が多いです.

実際に使うとこのようになります.

 

ソースコード

 

実行結果

f:id:pokoshirou:20181011094344p:plain

 

クラスメソッド

フィールドにインスタンス変数とクラス変数があるように,メソッドにもインスタンスメソッドとクラスメソッドがあります.

インスタンスメソッドインスタンスを生成した後に使用できるメソッドで,

クラスメソッドインスタンスを生成しなくても使用できるメソッドです.

クラスメソッドの宣言は,クラス変数と同じように先頭に static キーワードをつけます.

クラスメソッドを呼び出すには,クラス変数と同じようにクラス名にドット「.」をつけます.

インスタンスメソッドとクラスメソッドを使い分けて,先ほど紹介したソースコードを整理してみます.

 

ソースコード

 

実行結果

f:id:pokoshirou:20181011094344p:plain

Mainメソッドが見やすくなりました!

 

インスタンス配列

データ型に配列があるように,クラスのインスタンスにも配列があります.

次のように記述します.

例えば,このように記述します.

この状態では,まだインスタンスは生成されていません.

配列の領域を確保しただけなので,1つずつインスタンスを生成する必要があります.

実際に使うとこのようになります.

 

ソースコード

 

実行結果

f:id:pokoshirou:20181011094344p:plain

 

しかし,これでは配列のメリットを活かしていません.

名前を格納するstring型の配列を作って,それを実引数として呼び出すようにしましょう.

 

ソースコード

 

実行結果

f:id:pokoshirou:20181011094344p:plain

 

大分すっきりしました!

 

 

今回はここまで!

次回はアクセス修飾子などについて解説します!