Javaで、オブジェクトを学習しています。インスタンス化する際に、デフォルトの数値を上書きすべく、数字を入れるとエラーがついてしまいます。2パターンのエラーがありました。原因と改善方法のヒントをお願いいたします。
完成形
1 番目の人のステータス
◆【名前】太郎
◆【年齢】30
◆【エネルギー】20
ソースコード①Main
DemoPerson person1 = new DemoPerson("太郎",30); System.out.println(DemoPerson.person_num + " 番目の人のステータス"); person1.showStatus();
上記に対するエラーメッセージは以下になります。
コンストラクター DemoPerson(String, int) は未定義です
DemoPerson person1 = new DemoPerson("コードキャンプ太郎"); person1.age=30; System.out.println(DemoPerson.person_num + " 番目の人のステータス"); person1.showStatus();
上記に対するエラーメッセージは以下になります。
型の不一致: int から Age には変換できません
ソースコード②Person
// フィールド String name; // 名前 Age age; // 年齢 Energy energy; // エネルギー static int person_num = 0; // コンストラクタ(引数が1つバージョン) public DemoPerson(String name) { this.name = name; this.age = new Age(); this.energy = new Energy(); person_num++; } // コンストラクタ(引数が2つバージョン) public DemoPerson(String name, Age age) { this.name = name; this.age = age; this.energy = new Energy(); person_num++; } // コンストラクタ(引数が2つバージョン) public DemoPerson(String name, Energy energy) { this.name = name; this.age = new Age(); this.energy = energy; person_num++; } // コンストラクタ(引数が3つバージョン) public DemoPerson(String name, Age age, Energy energy) { this.name = name; this.age = age; this.energy = energy; person_num++; } // ステータスを表示する void showStatus() { System.out.println("◆【名前】" + this.name); System.out.println("◆【年齢】" + this.age); System.out.println("◆【エネルギー】" + this.energy); }
ソースコード③Age
public class Age { int age; @Override public String toString() { return "" + age; } public Age() { this.age = 20; } public Age(int age) { this.age = age; } }
ソースコード④Energy
public class Energy { int energy; @Override public String toString() { return "" + energy; } public Energy() { this.energy = 20; } public Energy(int energy) { this.energy = energy; } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。