≪Java≫ コンストラクタを書く場合、書かない場合
【コンストラクタを書かない場合】
※自前のコンストラクタを書かない場合でも、(見えていないが)デフォルトコンストラクタがあるため、@・Aの書き方ができる。
デフォルトコンストラクタ => public Music(){}↓ @・Aの部分で値を入れると、自前のコンストラクタがないのでコンパイルエラーとなる。
public class Music {
String title;
String artist;
int price;
}
public class ExecMusic {
public static void main(String[] args) {
// オブジェクトを作成する
Music donguri = new Music(); ⇒@
Music syabon = new Music(); ⇒A
// フィールドに値を代入する
donguri.title = "どんぐりころころ";
donguri.artist = "梁田 貞";
donguri.price = 1200;
syabon.title = "シャボン玉";
syabon.artist = "中山 晋平";
syabon.price = 1000;
// フィールドを表示する
System.out.println("曲名: " + donguri.title);
System.out.println("作者: " + donguri.artist);
System.out.println("価格: " + donguri.price);
System.out.println("曲名: " + syabon.title);
System.out.println("作者: " + syabon.artist);
System.out.println("価格: " + syabon.price);
}
}
【コンストラクタを書く場合】
↓
自前のコンストラクタを書くとデフォルトのコンストラクタがなくなるので、@・Aで値を入れないとコンストラクタが未定義としてコンパイルエラーとなる
public class Music {
String title;
String artist;
int price;
//コンストラクタ
public Music(String t, String a, int p){
title = t;
artist = a;
price = p;
}}
public class ExecMusic {
public static void main(String[] args) {
// オブジェクトを作成する
Music donguri = new Music( "どんぐりころころ" , "梁田 貞" , 1200 ); ⇒@
Music syabon = new Music( "シャボン玉" , "中山 晋平" , 1000 ); ⇒A
// フィールドを表示する
System.out.println("曲名: " + donguri.title);
System.out.println("作者: " + donguri.artist);
System.out.println("価格: " + donguri.price);
System.out.println("曲名: " + syabon.title);
System.out.println("作者: " + syabon.artist);
System.out.println("価格: " + syabon.price);
}
}
ただし、【コンストラクタを書く場合】においても、コンストラクタを書くクラスに、デフォルトコンストラクタ
public Music(){}
を追記すると、(コンストラクタをオーバーロードすると)
【コンストラクタを書かない場合】のように
Music donguri = new Music();
と宣言してから、
donguri.title = "どんぐりころころ";
donguri.artist = "梁田 貞";
donguri.price = 1200;
とフィールドに値を代入しても、コンパイルエラーにはならない。