前提・実現したいこと
Creatureクラスは正しいです。
Attackerクラスをどう修正すればいいですか?
宜しくお願いします。
ヒントだけでもいいです。
発生している問題・エラーメッセージ
Attacker.java:26: エラー: Attackerはabstractです。インスタンスを生成することはで きません Attacker attack = new Attacker(); ^ Attacker.java:27: エラー: メソッド本体がないか、abstractとして宣言されています public void attack(); ^ Attacker.java:30: エラー: メソッド本体がないか、abstractとして宣言されています void attack(); ^ エラー3個
該当のソースコード
Java
1 2//生物を表すCreatureクラス 3public class Creature { 4 /** 5 * 定数フィールド 6 */ 7 private final String DEFAULT_NAME = "スライム"; 8 private final int DEFAULT_LIFE = 10; 9 10 /** 11 * インスタンスフィールド 12 */ 13 private String name; 14 private int life; 15 16 /** 17 * コンストラクタ 18 */ 19 public Creature() { 20 setName(DEFAULT_NAME); 21 setLife(DEFAULT_LIFE); 22 } 23 /** 24 * コンストラクタ 25 * @param name 名前 26 * @param life 生命値 27 */ 28 public Creature(String name, int life) { 29 setName(name); 30 if( 0 < life ) { 31 setLife(life); 32 } else { 33 setLife(1); 34 } 35 } 36 37//---------- アクセッサー(セッター、ゲッター) 38 39 /** 40 * nameに名前をセットするメソッド 41 * @param name セットする名前の文字列 42 */ 43 public void setName(String inputName) { 44 if( inputName.length() == 0 ) { 45 System.out.println("1文字以上必要です。"); 46 System.out.println("『名無し』にセットします。"); 47 this.name = "名無し"; 48 } else { 49 this.name = inputName; 50 } 51 } 52 /** 53 * nameの値を返すメソッド 54 */ 55 public String getName() { 56 return this.name; 57 } 58 59 /** 60 * lifeに値をセットするメソッド 61 * @param life 生命値としてセットする整数 62 */ 63 public void setLife(int inputLife) { 64 this.life = inputLife; 65 } 66 /** 67 * nameの値を返すメソッド 68 */ 69 public int getLife() { 70 return this.life; 71 } 72 73//---------- メソッド 74 75 /** 76 * ステータスを参照するメソッド 77 */ 78 @Override 79 public String toString(){ 80 return "名前:" + name + "\t生命値:" + life; 81 } 82}
Java
1 2//攻撃的な生命体を表す抽象クラス、Attackerクラスを作成してください。 3//①生命値と名前を設定できるコンストラクタを持つ。(引数なしコンストラクタと引数ありコンストラクタの二つを持つ) 4//②他の生命体を攻撃する抽象メソッド、void attack(引数はAttacker型インスタンス)メソッドを持つ。 5 6abstract class Attacker extends Creature{ 7 8 9 public void Attacker(){ 10 11 } 12 13 public void Creature(String name, int life) { 14 setName(name); 15 if( 0 < life ) { 16 setLife(life); 17 } else { 18 setLife(1); 19 } 20 } 21 22 private String attack; 23 private int life; 24 25 abstract class Creature{ 26 Attacker attack = new Attacker(); 27 public void attack(); 28 29 } 30 void attack(); 31}
試したこと
抽象クラスからはコンストラクタできない。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/27 12:32
2019/05/27 13:22
2019/05/27 13:42 編集