コンストラクタとは?
コンストラクタとは、クラスを生成するときに呼び出す特殊なメソッドです。クラスを生成するときに呼び出されるため、クラスのインスタンスを生成すると同時にクラスの初期値を設定できます。クラスが生成されるときに、最初にどういった値を設定しておくかを明確にすることで、プログラムの可読性が上がるという効果もあります。
例えば顧客クラスを生成するときにIDと名前を指定するようにコンストラクタが定義されている場合は、顧客クラスは生成後は必ずIDと名前が設定されているという事が保証されることになります。これを完全コンストラクタパターンといいます。
コンストラクタの数
コンストラクタは一つのクラスに複数定義することができます。ただし、同じ引数の構成のものは重複して定義することはできません。これはメソッドを作成するときの成約と同じです。
コンストラクタの書き方
アクセス修飾子、クラス名、(引数)
コンストラクタは特殊なメソッドなので、戻り値はなく、名前も必ずクラス名を記述する必要があります。
public Customer(string firstName,string lastName) { FirstName = firstName; LastName = lastName; }
コンストラクタイニシャライザ
コンストラクタイニシャライザとは、あるコンストラクタから、別のコンストラクタを呼び出せる機能の事を言います。例えば顧客クラスに「IDと名前」を指定させるコンストラクタと「ID」のみを指定するコンストラクタが定義されている場合、「ID」のみを指定するコンストラクタから「IDと名前」を指定するコンストラクタを呼びだすことができます。この機能により「ID」のみを指定するコンストラクタが呼ばれた場合は「引数のID」と「名前のデフォルト値」を用いて、「IDと名前」のコンストラクタを呼び出すことで、「ID」のみのコンストラクタには処理を書く必要がなくなり、重複コードがなくなるという効果があります。
コンストラクタイニシャライザの書き方
アクセス修飾子、クラス名、(引数)、コロン、this(引数)
通常のコンストラクタの書き方に加えて、コロンでつないでthisキーワードを書きます。thisとは自分自身の意味なので、自分のクラスの別のコンストラクタを呼び出すという意味になります。thisの後の引数には、別の呼び出したいコンストラクタの引数を指定します。通常は最初に呼び出されているコンストラクタで不足している引数にデフォルト値を設定し、それ以外は引数をそのまま引き渡すという使い方をします。
public Customer( string lastName) :this("--",lastName) { //コンストラクタイニシャライザによりここに重複コードを書く必要がなくなる ////FirstName = "--"; ////LastName = lastName; }
サンプルコード
namespace CS17 { class Customer { public string FirstName; public string LastName; /// /// コンストラクタ(フルネーム指定) /// ///名 ///姓 public Customer(string firstName,string lastName) { FirstName = firstName; LastName = lastName; } /// /// コンストラクタ(苗字指定) /// ///姓 public Customer( string lastName) :this("--",lastName) { //コンストラクタイニシャライザによりここに重複コードを書く必要がなくなる ////FirstName = "--"; ////LastName = lastName; } /// /// フルネームの取得 /// /// public string GetFullName() { return LastName + FirstName; } } }
フルネーム指定と苗字のみ指定のコンストラクタを2つ作成。苗字のみ指定のコンストラクタが呼ばれたときは、コンストラクタイニシャライザ機能を使い、名前を「–」で指定して、フルネーム指定のコンストラクタを呼び出すことで、重複コードをなくしています。
- C#初心者のための基礎!C#文法2割の知識で8割の仕事をする方法!#1
- C#初心者のための基礎!ブロックと名前空間とクラスとメソッドを解説#2
- C#初心者のための基礎!#3値の扱い方。変数と定数をわかりやすく解説!
- C#初心者のための基礎!データ型の種類と使い分けをわかりやすく解説#4
- C#初心者のための基礎!値型と参照型の違いと使い方をわかりやすく解説#5
- C#初心者のための基礎!データ型の変換のやり方をわかりやすく解説#6
- C#初心者のための基礎!配列の使い方をわかりやすく解説#7
- C#初心者のための基礎!動的配列List<T>の使い方をわかりやすく解説#8
- C#初心者のための基礎!演算子の使い方をわかりやすく解説#9
- C#初心者のための基礎!if文とswich文の使い方をわかりやすく解説#10
- C#初心者のための基礎!while文の書き方と使い方をわかりやすく解説#11
- C#初心者のための基礎!do-While文の書き方と使い方をわかりやすく解説#12
- C#初心者のための基礎!for文の書き方と使い方をわかりやすく解説#13
- C#初心者のための基礎!foreach文の書き方と使い方をわかりやすく解説#14
- C#初心者のための基礎!オブジェクト指向の意味をわかりやすく解説#15
- C#初心者のための基礎!クラスの意味と使い方をわかりやすく解説#16
- C#初心者のための基礎!コンストラクタの意味と使い方をわかりやすく解説#17
- C#初心者のための基礎!アクセス修飾子の意味と使い方をわかりやすく解説#18
- C#初心者のための基礎!メソッドの意味と使い方をわかりやすく解説#19
- C#初心者のための基礎!フィールドの意味と使い方をわかりやすく解説#20
- C#初心者のための基礎!インスタンスの意味と使い方をわかりやすく解説#21
- C#初心者のための基礎!カプセル化の意味と使い方をわかりやすく解説#22
- C#初心者のための基礎!プロパティの意味と使い方をわかりやすく解説#23
- C#初心者のための基礎!Disposeとusingの意味と使い方を解説#24
- C#初心者のための基礎!staticスタティックの意味と使い方を解説#25
- C#初心者のための基礎!継承の意味と使い方をわかりやすく解説#26
- C#初心者のための基礎!override(オーバーライド)の使い方を解説#27
- C#初心者のための基礎!ポリモーフィズムとインタフェースの使い方を解説#28
- C#初心者のための基礎!ポリモーフィズムと抽象クラスの使い方を解説#29
- C#初心者のための基礎!例外Exceptionの意味と使い方をわかりやすく解説#30