前提・実現したいこと
戦闘機(FighterAiracraft)と、旅客機(PassengerPlaneの2つのクラスに共通するtypeメンバ変数を、飛行機(AirPlane)クラスに集約したいです。
問題文
二種類の飛行機、戦闘機(FighterAiracraft)と、旅客機(PassengerPlane)クラスのインスタンスを生成し、
各クラスのメソッドを実行するプログラムである。この2つのクラスには、共通するメンバが存在する。
そこで、これら2つのクラスに共通するメンバを、飛行機(AirPlane)クラスに集約し、FighterAiracraftクラス、およびPassengerPlaneは、
それらのクラスを継承したものにするように、プログラムを書きかかえなさい。ただし、この時、AirPlaneクラスは、抽象メソッドfly()を持つ抽象クラスとすること
発生している問題・エラーメッセージ
集約の仕方が分からない。
該当のソースコード
java
1public class Problemex3_1{ 2 /** 3 * メインメソッド メイン処理を実行します。 4 * 5 * @param args 6 * プログラム起動引数 7 */ 8 public static void main(String[] args) { 9 // 戦闘機クラスのインスタンスの生成 10 Problemex3_1_FighterAiracraft fighter = new Problemex3_1_FighterAiracraft(); 11 Problemex3_1_PassengerPlane airlinear = new Problemex3_1_PassengerPlane(); 12 // 戦闘機クラスの処理 13 fighter.fly(); // 飛行する 14 fighter.fight(); // 戦闘する 15 // 旅客機クラスの処理 16 airlinear.fly(); // 飛行する 17 airlinear.carryPassengers(); // 乗客を運ぶ 18 19 } 20 21}
PassengerPlane
1 2public class Problemex3_1_PassengerPlane extends Problemex3_1_AirPlane { 3 // 飛行機のタイプ 4 private String type = "旅客機"; 5 6 // タイプの取得 7 public String getType() { 8 return type; 9 } 10 11 // 飛行する 12 public void fly() { 13 System.out.println("乗客を乗せて目的地まで飛行します。"); 14 } 15 16 // 戦闘する 17 public void carryPassengers() { 18 System.out.println("乗客を目的地まで運びます。"); 19 } 20} 21
FighterAiracraft
1public class Problemex3_1_FighterAiracraft extends Problemex3_1_AirPlane { 2 // 飛行機のタイプ 3 private String type = "戦闘機"; 4 5 // タイプの取得 6 public String getType() { 7 return type; 8 } 9 10 // 飛行する 11 public void fly() { 12 System.out.println("攻撃に出るために飛行します。"); 13 } 14 15 // 戦闘する 16 public void fight() { 17 System.out.println("戦闘します。"); 18 } 19} 20
AirPlane
1abstract public class Problemex3_1_AirPlane { 2 // 飛行機のタイプ 3 protected String type; 4 5 // 抽象メソッドfly 6 public abstract void fly(); 7 8 // タイプの取得 9 public String getType() { 10 return type; 11 } 12}