###Javaオリジナル問題作成2の続きです。
#12章(高度な継承)
■問題1
heroパッケージ作成してください。(以下のすべてのクラスはここに格納)
Heroクラス(抽象クラス)を作成し、attack(抽象メソッド),guard(抽象メソッド)を作成してください。
Aheroクラス(Heroクラスを継承)を作成し、attack(内容:A攻撃)、guard(内容:A防御)を作成してください。
Bheroクラス(Heroクラスを継承)を作成し、attack(内容:B攻撃)、guard(内容:B防御)を作成してください。
Mainクラスを作成し、Ahero,Bheroのメソッドを表示させてください。
■問題2
creatureパッケージ作成してください。(以下のすべてのクラスはここに格納)
Creatureクラス(インタフェース宣言)を作成し、runメソッドを追加してください。
BattleCreatureクラス(Creatureクラスを継承し、インタフェースを宣言)を作成し、attackメソッド追加してください。
Goblinクラス(BattleCreatureクラスを実装)を作成し、runメソッド(内容:ゴブリンは逃げた)、attackメソッド(内容:ゴブリンは攻撃した)をオーバーライドさせてください。
Mainクラス作成し、run,attackメソッドを表示させてください。
解答
//問題1
package hero;
public class Main {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Ahero a = new Ahero();
a.attack();
a.guard();
Bhero b = new Bhero();
b.attack();
b.guard();
}
}
//実行結果
A攻撃
A防御
B攻撃
B防御
package hero;
public abstract class Hero {
public abstract void attack();
public abstract void guard();
}
package hero;
public class Ahero extends Hero {
@Override
public void attack() {
// TODO 自動生成されたメソッド・スタブ
System.out.println("A攻撃");
}
@Override
public void guard() {
// TODO 自動生成されたメソッド・スタブ
System.out.println("A防御");
}
}
package hero;
public class Bhero extends Hero {
@Override
public void attack() {
// TODO 自動生成されたメソッド・スタブ
System.out.println("B攻撃");
}
@Override
public void guard() {
// TODO 自動生成されたメソッド・スタブ
System.out.println("B防御");
}
}
//問題2
package creature;
public class Main {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Goblin g = new Goblin();
g.run();
g.attack();
}
}
//実行結果
ゴブリンは逃げた
ゴブリンは攻撃した
package creature;
public interface Creature {
void run();
}
package creature;
public interface BattleCreature extends Creature {
void attack();
}
package creature;
public class Goblin implements BattleCreature{
@Override
public void run() {
// TODO 自動生成されたメソッド・スタブ
System.out.println("ゴブリンは逃げた");
}
@Override
public void attack() {
// TODO 自動生成されたメソッド・スタブ
System.out.println("ゴブリンは攻撃した");
}
}
#13章(多態性)
■問題1
monsterパッケージ作成(以下のすべてのクラスはここに格納)
Monsterクラス(インターフェイスを宣言し)作成し、runメソッド(抽象メソッド)を追加してください。
Slimeクラス(Monsterクラスを実装)作成し、runメソッド(内容:スライムは逃げた)を追加してください。
Goblinクラス(Monsterクラスを実装)作成し、runメソッド(内容:ゴブリンは逃げた)を追加してください。
DeathBatクラス(Monsterクラスを実装)作成し、runメソッド(内容:地獄コウモリは逃げた)を追加してください。
Mainクラスを作成し、runメソッド一行で各内容を呼び出してください。
ヒント
・Monster配列作成(要素3つ)
・要素に各インスタンス挿入。
・拡張for文でrunメソッド呼び出す。
解答
//問題1
package monster;
public class Main {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Monster[] monsters = new Monster[3];
monsters[0] = new Slime();
monsters[1] = new Goblin();
monsters[2] = new DeathBat();
for (Monster mo : monsters) {
mo.run();
}
}
}
//実行結果
スライムは逃げた
ゴブリンは逃げた
地獄コウモリは逃げた
package monster;
public interface Monster {
void run();
}
package monster;
public class Slime implements Monster {
@Override
public void run() {
// TODO 自動生成されたメソッド・スタブ
System.out.println("スライムは逃げた");
}
}
package monster;
public class Goblin implements Monster {
@Override
public void run() {
// TODO 自動生成されたメソッド・スタブ
System.out.println("ゴブリンは逃げた");
}
}
package monster;
public class DeathBat implements Monster {
@Override
public void run() {
// TODO 自動生成されたメソッド・スタブ
System.out.println("地獄コウモリは逃げた");
}
}
Javaオリジナル問題作成1(Java入門編:スッキリわかるJava
Javaオリジナル問題作成2(Java入門編:スッキリわかるJava
###次回に続く