前提・実現したいこと
[java]
ある1つのクラスを継承した2つのクラスから生成したインスタンスを同じArrayListに入れたい。
具体的には、Humanクラスを継承したHeroクラスとWariiorクラスのインスタンスを1つのArrayListに入れたい。
発生している問題・エラーメッセージ
ArrayListに入れる際の型の指定の仕方がわからず、Humanに指定すると全てHumanクラスのhitPoint,attackPointになってしまう。
それぞれHero,Warriorの値になるようにしたい。
該当のソースコード
コードは以下の通りです。
java
1public class Sample { 2 public static void main(String args[]){ 3 ArrayList<Human> members = new ArrayList<>(); 4 members.add(new Hero("勇者")); 5 members.add(new Warrior("戦士")); 6 7 for (Human member : members) { 8 System.out.println("名前:" + member.getName() + ",HP:" member.getHitPoint() + ",攻撃力:" member.getAttackPoint()); 9 } 10 } 11} 12 13public class Human { 14 final int MAX_HITPOINT = 100; 15 private String name; 16 private int hitPoint = 100; 17 private int attackPoint = 20; 18 19 public Human(String name) { 20 this.name = name; 21 } 22 23 // getter略 24} 25 26public class Hero extends Human { 27 final int MAX_HITPOINT = 150; 28 private int hitPoint = this.MAX_HITPOINT; 29 private int attackPoint = 30; 30 31 public Hero(String name) { 32 super(name); 33 } 34 35 // getter略 36 37} 38 39public class Warrior extends Human { 40 final int MAX_HITPOINT = 120; 41 private int hitPoint = this.MAX_HITPOINT; 42 private int attackPoint = 50; 43 44 public Warrior(String name) { 45 super(name); 46 } 47 48 // getter略 49 50}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/14 05:23