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

目次

継承

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

問題 1 難易度 ★★★

① 既存の Slime クラスを継承した、FireSlime クラスを定義してください。
  ・FireSlime は火を吹くことができる特別なスライムなので、fire メソッドを定義してください。

② メインメソッド内で 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 難易度 ★★★

問 1

① 既存の Bicycle(自転車)クラスを継承した ElectricAssistBicycle(電動アシスト自転車)クラスを定義してください。

② ElectricAssistBicycle の name は「電動アシスト自転車」としてください。

③ ElectricAssistBicycle はモーターの力で、ペダルに伝えた力の 2 倍の速度を出すことができるように定義してください。

問 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 155 times, 1 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次