2015年9月15日火曜日

コンストラクタってなに?

クラス、インスタンス、オブジェクトについてはすでに説明しました。では、Javaを勉強していてよく聞くもう一つの言葉「コンストラクタ」とはなんなのでしょうか?口で説明するのは難しいので他サイトから引用してみます。
コンストラクタとは、クラスからオブジェクトを作成した際に、自動的に実行されるメソッドのことで、メンバ変数の初期化などを主に行います。-Java driveより引用
これがコンストラクタです。でもこれだけだとまだよくわかりません。

実際に書いてみる

実際にコードを書いてなにがコンストラクタなのかを見てみましょう。
class Sample01{
public static void main(String args[]){ 
        Subsample instancedayo = new Subsample();
        instancedayo.display(); 
        }
class Subsample{
       private String Word; 
       public void display(){
       System.out.println("The word is " + Word + "."); 
       }
}
これを実行するとWordの部分にはnullと表示されます。nullというのは「なにも代入されてないよー空っぽだよー」と言う意味です。何も代入していないのだから当たり前ですね。

まあ最初の変数の宣言でprivate String Word = "aaa";とでも初期化しておけばきちんと表示されるのですが、これだと固定した値しか設定することが出来ません。

固定した値しか設定できないって不便じゃない?

こんな時に使うのがコンストラクタです。
「null」と表示されてしまいました。これはメンバ変数の初期化を行っておらず、また一度も値を格納しないままメンバ変数の値を表示しようとしたためです。
このようにクラスからオブジェクトを作成した際に、まずメンバ変数の初期化を行っておかなければいけない場合が多々あります。メンバ変数の定義時に合わせて初期値を代入しておくことでも解決できますが、その場合は固定した値しか設定することが出来ません。
こういった場合にコンストラクタを使います。コンストラクタとは、クラスからオブジェクトが作成された際に、無条件で実行されるメソッドのことで下記のような記述を行います。-Java driveより引用
コンストラクタは

クラス名(){
  ....
}

こんなふうに記述されます。

実際に書いてみましょう。
class Sample01{
public static void main(String args[]){

        Subsample instancedayo = new Subsample();
        instancedayo.display();

        }
}

class Subsample{
       private String Word;

       Subsample(){
       Word = "Hello and see you";
       }

       public void display(){
       System.out.println("The word is " + Word + "."); 
       }
}
赤いのがコンストラクタです。今度はどうでしょうか。コンパイルして実行してみます。
今度はnullじゃなくてきちんとコンストラクタで設定した値が表示されていますね。

コンストラクタとは、このようにクラスからオブジェクトが作成された際に、無条件で実行されるメソッドのことでメンバ変数の初期化などを主に行います。