[ Java練習問題 ] 練習問題 第13回 『継承』

目次

継承

Java練習問題 第13回では「継承」についての問題を用意してあります。
「継承」の解説はこちら

問題 1 難易度 ★★★

以下の手順に従ってプログラムを作成してください。
① 既存の Slime クラスを継承した、FireSlime クラスを定義してください。
② FireSlime は火を吹くことができる特別なスライムなので、fire メソッドを定義します。fireメソッドは、実行されると「〇〇(name)は火を吹いた!」と表示します。
③ メインメソッド内で FireSlime のインスタンスを(”すら太郎”,100)として生成し、attack(),fire(),run() の 3 つのメソッドを呼び出してください。

public class Main_0901 {
  public static void main(String[] args) {
  
  }
}

class Slime {
  private String name;
  private int hp;
  public Slime(String name, int hp) {
    this.name = name;
    this.hp = hp;
  }
  public int getHp() {
    return hp;
  }
  public void setHp(int hp) {
    this.hp = hp;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public void run() {
    System.out.println(name + "は逃げ出した");
  }
  public void attack() {
    System.out.println(name + "の攻撃!");
  }
}

実行例

すら太郎の攻撃!
すら太郎は火を吹いた!
すら太郎は逃げ出した

問題 1 解答

正解は、、、
public class Main_0901 {
  public static void main(String[] args) {
    FireSlime fireSlime = new FireSlime("すら太郎", 100);
    fireSlime.attack();
    fireSlime.fire();
    fireSlime.run();
  }
}

class Slime {
  private String name;
  private int hp;
  public Slime(String name, int hp) {
    this.name = name;
    this.hp = hp;
  }

  public int getHp() {
    return hp;
  }
  
  public void setHp(int hp) {
    this.hp = hp;
  }
  
  public String getName() {
    return name;
  }
  
  public void setName(String name) {
    this.name = name;
  }
  
  public void run() {
    System.out.println(name + "は逃げ出した");
  }
  
  public void attack() {
    System.out.println(name + "の攻撃!");
  }
}

class FireSlime extends Slime {
  public FireSlime(String name, int hp) {
    super(name, hp);
  }
  
  public void fire() {
    System.out.println(getName() + "は火を吹いた!");
  }
}

問題 2 難易度 ★★★

以下の手順に従ってプログラムを作成してください。

STEP 1

① 既存の Bicycle(自転車)クラスを継承した ElectricAssistBicycle(電動アシスト自転車)クラスを定義してください。
② ElectricAssistBicycle の name は「電動アシスト自転車」としてください。
③ ElectricAssistBicycle はモーターの力で、ペダルに伝えた力の 2 倍の速度を出すことができるように定義してください。

STEP 2

① メインメソッド内で ElectricAssistBicycle のインスタンスを生成して下さい。
② ElectricAssistBicycle インスタンスの、pedal メソッドを引数 10.0 で呼び出してください。
③ ElectricAssistBicycle インスタンスの、showStatus メソッドを呼び出してください。
④ ElectricAssistBicycle インスタンスの、braking メソッドを呼び出してください。
⑤ ElectricAssistBicycle インスタンスの、showStatus メソッドを呼び出してください。

public class Main_0902 {
  public static void main(String[] args) {
  Bicycle bicycle = new Bicycle();
  bicycle.pedal(10.0);
  bicycle.showStatus();
  bicycle.braking();
  bicycle.showStatus();
  }
}

//自転車クラス
class Bicycle {
  private String name;
  private double speed;
  public Bicycle() {
    setName("自転車");
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  private void setSpeed(double speed) {
    this.speed = speed;
  }
  public double getSpeed() {
    return speed;
  }
  public void pedal(double power) {
    setSpeed(power * 1.0);
  }
  public void braking() {
    setSpeed(0.0);
  }
  public void showStatus() {
    System.out.println(getName() + "は、時速" + getSpeed() + "km で走行中です。");
  }
}

実行例

自転車は、時速 10.0km で走行中です。
自転車は、時速 0.0km で走行中です。
電動アシスト自転車は、時速 20.0km で走行中です。
電動アシスト自転車は、時速 0.0km で走行中です。

問題 2 解答

正解は、、、
public class Main_0902 {
  public static void main(String[] args) {
    Bicycle bicycle = new Bicycle();
    bicycle.pedal(10.0);
    bicycle.showStatus();
    bicycle.braking();
    bicycle.showStatus();
    ElectricAssistBicycle assistBicycle = new ElectricAssistBicycle();
    assistBicycle.pedal(10.0);
    assistBicycle.showStatus();
    assistBicycle.braking();
    assistBicycle.showStatus();
  }
}

//自転車クラス
class Bicycle {
  private String name;
  private double speed;
  public Bicycle() {
    setName("自転車");
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  private void setSpeed(double speed) {
    this.speed = speed;
  }
  public double getSpeed() {
    return speed;
  }
  public void pedal(double power) {
    setSpeed(power * 1.0);
  }
  public void braking() {
    setSpeed(0.0);
  }
  public void showStatus() {
    System.out.println(getName() + "は、時速" + getSpeed() + "km で走行中です。");
  }
}

//電動アシスト自転車
class ElectricAssistBicycle extends Bicycle {
  public ElectricAssistBicycle() {
    setName("電動アシスト自転車");
  }
  
  @Override
  public void pedal(double power) {
    super.pedal(power * 2.0);
  }
}

Java練習問題 第14回では「抽象クラス、抽象メソッド」から出題します。

(Visited 267 times, 2 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

エヌ・キャリア・アカデミーは「21世紀のこれからの激変する社会を生き抜き、第一線で活躍することのできる人材を世に送り出していく」ことを教育理念にかかげ、IT系の職業訓練を実施している職業訓練校です。

この記事は、エヌ・キャリア・アカデミーのスタッフが執筆しています。

企業ホームページ:https://n-career.jp/

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次