![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
javaの継承のところで困っています。
主にHeroのクラス、ptra13-2のクラスのところが分からないです。
問題形式になっています。
----------------------------------------------------------------------------------------------------
package practice13.ptra13;
import practice13.common.Hero;
public class PTra13_02 {
/*
* ★ common.Characterクラスを継承した、common.Heroクラスを作成してください
* ●HP, POWER, ENDURANCEはそれぞれ、(25, 10, 7)
*/
public static void main(String[] args) {
// ★ common.Heroクラスをインスンタンス化してください
Hero hero=new Hero();
// ★ common.Heroインスタンスのnameに"勇者"を設定して下さい
hero.setName("勇者");
// ★ common.Heroインスタンスのキャラクター情報を表示してください
}
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
package practice13.common;
public class Hero extends Character{
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
package practice13.common;
/**
* 登場するキャラクターの情報とデフォルトの行動を設定したクラスです
* @author rhizome
*
*/
public class Character {
/** 名前 */
private String name = "キャラクター";
/** 体力 */
private int hp;
/** 力 */
private int power;
/** 防御力 */
private int endurance;
/**
* 体力、攻撃力、防御力の初期値を設定しつつ、Characterインスタンスを生成します
* @param hp
* @param attack
* @param defence
*/
public Character(int hp, int power, int endurance) {
this.hp = hp;
this.power = power;
this.endurance = endurance;
}
/**
* 名前を設定します
* @param name 設定したい名前
*/
public void setName(String name) {
this.name = name;
}
/**
* 名前を取得します
* @return 名前
*/
public String getName() {
return this.name;
}
/**
* 攻撃を行います
* @return 相手に与えるダメージを返します
*/
public int attack() {
return this.power;
}
/**
* ダメージ判定を行います
* @param attack 攻撃値
* @return 体力が0になったらtrue、まだ体力が残っていたらfalse
*/
public boolean damage(int attack) {
// ダメージ計算
int calc = attack - this.endurance;
if (calc <= 0) {
// 必ず1ダメージは入るようにする
calc = 1;
}
// ダメージ分体力を減らす
this.hp -= calc;
// 体力がなくなったかどうかの判定
if (this.hp <= 0) {
this.hp = 0;
return true;
}
return false;
}
/**
* キャラクター情報を表示します
* @return
*/
public String showParameter() {
StringBuilder str = new StringBuilder();
str.append("名 前:" + this.name);
str.append("\n");
str.append("体 力:" + this.hp);
str.append("\n");
str.append(" 力 :" + this.power);
str.append("\n");
str.append("耐 久:" + this.endurance);
return str.toString();
}
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
No.1ベストアンサー
- 回答日時:
eclipseで実際に実行して動作することを確認しています。
面倒なのでpackageは全てcommonにしています。
「PTra13_02、Hero、Character」は別ファイルだと言う事に注意して下さい。
実行結果
>名 前:勇者
>体 力:25
> 力 :10
>耐 久:7
package common;
//↑面倒なのでpackageは全てcommonにしています。
import common.Hero;
public class PTra13_02 {
/*
* ★ common.Characterクラスを継承した、common.Heroクラスを作成してください
* ●HP, POWER, ENDURANCEはそれぞれ、(25, 10, 7)
*/
public static void main(String[] args) {
// ★ common.Heroクラスをインスンタンス化してください
Hero hero=new Hero();
//↑hero変数内にHeroオブジェクトのインスタンスが代入されています。
// ★ common.Heroインスタンスのnameに"勇者"を設定して下さい
hero.setName("勇者");
// ★ common.Heroインスタンスのキャラクター情報を表示してください
System.out.println(hero.showParameter());
}
}
package common;
//↑面倒なのでpackageは全てcommonにしています。
public class Hero extends Character{
public Hero() {
// super(hp, power, endurance);
super(25, 10, 7); // 継承上位のコンストラクター呼び出し
}
}
package common;
//↑面倒なのでpackageは全てcommonにしています。
/**
* 登場するキャラクターの情報とデフォルトの行動を設定したクラスです
* @author rhizome
*
*/
public class Character {
/** 名前 */
private String name = "キャラクター";
/** 体力 */
private int hp;
/** 力 */
private int power;
/** 防御力 */
private int endurance;
/**
* 体力、攻撃力、防御力の初期値を設定しつつ、Characterインスタンスを生成します
* @param hp
* @param attack
* @param defence
*/
public Character(int hp, int power, int endurance) {
this.hp = hp;
this.power = power;
this.endurance = endurance;
}
/**
* 名前を設定します
* @param name 設定したい名前
*/
public void setName(String name) {
this.name = name;
}
/**
* 名前を取得します
* @return 名前
*/
public String getName() {
return this.name;
}
/**
* 攻撃を行います
* @return 相手に与えるダメージを返します
*/
public int attack() {
return this.power;
}
/**
* ダメージ判定を行います
* @param attack 攻撃値
* @return 体力が0になったらtrue、まだ体力が残っていたらfalse
*/
public boolean damage(int attack) {
// ダメージ計算
int calc = attack - this.endurance;
if (calc <= 0) {
// 必ず1ダメージは入るようにする
calc = 1;
}
// ダメージ分体力を減らす
this.hp -= calc;
// 体力がなくなったかどうかの判定
if (this.hp <= 0) {
this.hp = 0;
return true;
}
return false;
}
/**
* キャラクター情報を表示します
* @return
*/
public String showParameter() {
StringBuilder str = new StringBuilder();
str.append("名 前:" + this.name);
str.append("\n");
str.append("体 力:" + this.hp);
str.append("\n");
str.append(" 力 :" + this.power);
str.append("\n");
str.append("耐 久:" + this.endurance);
return str.toString();
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Java java final 1 2022/06/10 22:49
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#にて別クラスの関数を使いたい
-
無名パッケージからのインポート
-
関数内の変数に<summary>コメン...
-
実行可能jarファイルのファイル...
-
ひとつのファイルにクラスは1つ?
-
[C#] OpenFileDialogによって得...
-
構造 他のクラスの構造体を別...
-
C# インターフェイスの実装
-
c++,ある関数のクラスから別の...
-
a href="..." とServlet
-
import と extends について
-
Eclipseを用いたJARファイル作...
-
クラス間でのデータ参照
-
C++で親クラスの関数を呼び出す...
-
内部クラスのスコープについて。
-
スーパークラスのインスタンス...
-
C#でほかのファイルにある自作...
-
スーパークラスのコンストラク...
-
Java リフレクションについて
-
C#のクラスライブラリでメッセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
クラス間でのデータ参照
-
C#にて別クラスの関数を使いたい
-
構造 他のクラスの構造体を別...
-
c++,ある関数のクラスから別の...
-
C#のクラスライブラリでメッセ...
-
C++でfriendクラスにしているの...
-
ひとつのファイルにクラスは1つ?
-
Java リフレクションについて
-
C#でほかのファイルにある自作...
-
範囲外の数値を代入したらエラ...
-
無名パッケージからのインポート
-
java-別クラスの変数の使い方を...
-
import と extends について
-
C# インターフェイスの実装
-
親クラスから子クラスへアクセス。
-
a href="..." とServlet
-
継承したクラス側のクラス名の取得
-
Java
-
JSPでbeanプロパティ(配列)を...
おすすめ情報