初心者向けのJava講座です。一緒にJavaを勉強しませんか?
はじめてのJava入門初心者向けのJava講座 |
コンストラクタ
クラスの中には変数とメソッドのほかにコンストラクタが存在します。
コンストラクタとはオブジェクトを呼び出される特殊なメソッドのことを言います。
今まで、オブジェクトを生成するときに
Sample45 obj = new Sample45();
と記述していました。この new のキーワードの後の Sample45()がコンストラクタです。
コンストラクタは必ずクラス名と同じにしなくてはいけません。
また戻り値を指定してもいけません。
戻り値を指定してやれば、これはコンストラクタではなくただのメソッドとして
扱われることになります。
また、コンストラクタもメソッドと同様にアクセス修飾子もつけれます。
オーバーロードも可能です。
では、サンプルプログラムで確認したいと思います。
ちなみにSample45.javaではオーバーロードしています。
サンプルプログラム(Sample45.java)
class Sample45{ public static void main(String args[]){ Sub45 obj1 = new Sub45(); Sub45 obj2 = new Sub45(10); } } class Sub45{ Sub45(){ System.out.println("引数のないコンストラクタです"); System.out.println("--------------------------"); } Sub45(int x){ System.out.println("int 型の引数があるコンストラクタです"); System.out.println("int x = " + x); } }
プログラムをコピーする場合すべて選択をクリックしてください。
Sponsored link
コンパイル・実行してみます。
このようにコンストラクタが呼び出すこともできます。
では次のプログラムをみてください。
サンプルプログラム(Sample45_1.java)
class Sample45_1{ public static void main(String args[]){ Sub45_1 obj1 = new Sub45_1(); Sub45_1 obj2 = new Sub45_1(10); obj1.Sub45_1(); } } class Sub45_1{ Sub45_1(){ System.out.println("引数のないコンストラクタです"); System.out.println("--------------------------");
} Sub45_1(int x){ System.out.println("int 型の引数があるコンストラクタです"); System.out.println("int x = " + x); System.out.println("--------------------------"); } void Sub45_1(){ System.out.println("これは、ただのメソッドです"); } }
プログラムをコピーする場合すべて選択をクリックしてください。
Sponsored link
コンパイル・実行してみます。
今回はコンストラクタ Sub45_1() と Sub45(int x) という2つのコンストラクタ
に void がついたメソッドを宣言しています。
戻り値があればそれはコンストラクタでなくメソッドとして扱われるので、
このような記述もできるのです。
メソッド名にコンストラクタと同じ名前をつけてもまったく問題ありません。
デフォルトコンストラクタ
今まで、いろいろなサンプルプログラムを見てきました。しかしコンストラクタの定義は一切書かれていませんでした。
しかし、オブジェクトを生成するときに呼び出されています。
Sample45 obj = new Sample45();
のように実は、クラスにコンストラクタが存在しないときはコンパイラによって自動的に
作成されます。このため、今まで()に引数を指定しないでオブジェクトの
生成が行われたわけです。
ただし、デフォルトコンストラクタはクラスに1つでもコンストラクタが存在する場合は
自動追加されることはありません。
デフォルトコンストラクタの特徴
・引数は持たない・中身は空
ネットで買えば断然お得!お買い物なら楽天市場
【PR】楽天市場はインターネット通販、通信販売が楽しめる総合ショッピングモール。 |