コンストラクタとは
オブジェクトの初期化にために使われる、特殊なメソッドのこと
オブジェクト生成時に様々な初期処理を行うことができる
//実行用クラス public class Execution { public static void main(String[] args) { new Goods("パソコン", 100000); } }
//商品クラス public class Goods { //コンストラクタを定義 public Goods(String name, int price) { //処理内容 System.out.println("商品:" + name + "の値段は" + price + "円です。"); } }
実行結果
商品:パソコンの値段は100000円です。
コンストラクタの条件
- クラス名と名前が一緒
- 戻り値を持たない
- new クラス名(コンストラクタの引数)の記述
①クラス名と名前が一緒
クラス名よメソッド名の名前が一緒でなくてはならない
今回のコードを参照にすると
クラス名が『Goods』なのでメソッド名も『Goods』となっている
//商品クラス //クラス名 public class Goods { //メソッド名 public Goods(String name, int price) { System.out.println("商品:" + name + "の値段は" + price + "円です。"); } }
②戻り値を持たない
コンストラクタを定義する際の注意点として
『String』『int』『void』など戻り値の型を記述してはいけない
NG例
public void Goods(String name, int price) { System.out.println("商品:" + name + "の値段は" + price + "円です。"); }
今回は『void』と記述してあるのでエラー
③new クラス名(コンストラクタの引数)の記述
オブジェクトを生成するため『new』演算子を使用して
生成するオブジェクトのクラスを指定している
『(コンストラクタの引数)』がある場合は、コンストラクタの定義が必要となる
今回のコードを参照すると『(コンストラクタの引数)』に文字列の”パソコン”と数値の10000が指定してあるため、コンストラクタを定義する際に、文字列であるString型と数値のint型を引数に指定する
//文字列 //数値 new Goods("パソコン", 100000);
public Goods(String name, int price){処理内容}
プラスαで抑えておきたい知識
・コンストラクタメソッドの一種なのでオーバーロードが可能
・コンストラクタを定義していない場合は、自動でデフォルトコンストラクタ(引数・処理なし)が生成される
//デフォルトコンストラクタ public Goods() {}
コメント