- 締切済み
間違い箇所を教えてください。
サブクラスを記述する下記のプログラムについて質問します。 class Car { //タイヤ private String tire = ""; public Car() { tire = "タイヤ"; } /* *どんなタイヤであるかを設定 *value タイヤの種類 */ public void setTire(String value) { tire = value + "のタイヤ"; } /* *作成されたタイヤを返します *return タイヤ */ public String getTire() { return tire; } } class Motorcar extends Car { private String tire = ""; private String body = ""; private String handle = ""; String type = ""; public Motorcar() { tire = "タイヤ"; body = "車体"; handle = "ハンドル"; } public String getTire() { return tire; } public String getBody() { return body; } public String getHandle() { return handle; } public String createMotorcar(String t) { type = t; tire = type + "のタイヤ"; return tire; } } public class Sample1 { public static void main(String atgs[]) { Motorcar car = new Motorcar(); String type = "トラック"; String tire = car.getTire(); String body = car.getBody(); String handle = car.getHandle(); System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); //どんな車かを設定 car.createMotorcar(type); tire = car.getTire(); body = car.getBody(); handle = car.getHandle(); System.out.println(type + "の作成!!"); System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); } } このまま実行すると、後半の System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); この部分の出力結果が タイヤ = タイヤ 車体 = 車体 ハンドル = ハンドル となりますよね? それを タイヤ = トラックのタイヤ 車体 = トラックの車体 ハンドル = トラックのハンドル という風にしたいのですが、どう記述したらよいのでしょうか? //どんな車かを設定 car.createMotorcar(type); tire = car.getTire(); body = car.getBody(); handle = car.getHandle(); ここでメソッドを呼び出したときに tire・body・handleのそれぞれに「トラックの」という言葉が 追加されるようにメソッドを記述しなければいけないと 思うのですが、最初に呼び出すときは必要ないので どうすればよいのかが分かりません。 教えて下さい、お願いします。 長くてすみません・・・
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- himajin100000
- ベストアンサー率54% (1660/3060)
/* >タイヤ = タイヤ 車体 = 車体 ハンドル = ハンドル となりますよね? ならない。 タイヤ = トラックのタイヤ 車体 = 車体 ハンドル = ハンドル となる。 */ class Car { //タイヤ private String tire = ""; public Car() { tire = "タイヤ"; } /* *どんなタイヤであるかを設定 *value タイヤの種類 */ public void setTire(String value) { tire = value + "のタイヤ"; } /* *作成されたタイヤを返します *return タイヤ */ public String getTire() { return tire; } } class Motorcar extends Car { private String tire = ""; private String body = ""; private String handle = ""; String type = ""; public Motorcar() { tire = "タイヤ"; body = "車体"; handle = "ハンドル"; } public String getTire() { return tire; } public String getBody() { return body; } public String getHandle() { return handle; } /* 別に戻り値あったっていいが,あっても使わないので。 */ /* *ちなみにcreateMotorCarした後は, *個人的には別にCarもMotorCarもCreateメソッドをオーバーライドする形でいいんじゃないかなあとか思ったりしないでもない。 なお,この仕様だと一回実行すると「の」の付かない単純な「タイヤ」「車体」「ハンドル」には戻せない。 */ public void createMotorcar(String t) { /* メソッドをこういう風に変更 */ type = t; tire = type + "のタイヤ"; body = type + "の車体"; handle = type + "のハンドル"; } } public class Q3914236A /* こちらの都合でクラス名か得てある */ { public static void main(String atgs[]) { Motorcar car = new Motorcar(); String type = "トラック"; String tire = car.getTire(); String body = car.getBody(); String handle = car.getHandle(); System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); //どんな車かを設定 car.createMotorcar(type); tire = car.getTire(); body = car.getBody(); handle = car.getHandle(); System.out.println(type + "の作成!!"); System.out.println("タイヤ=" + tire); System.out.println("車体=" + body); System.out.println("ハンドル=" + handle); } }