• ベストアンサー

メソッドの呼び出し方

サブクラスを記述する下記のプログラムについて質問します。 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); } } これを実行したら、 タイヤ = タイヤ 車体 = 車体 ハンドル = ハンドル トラックの作成!! タイヤ = トラックのタイヤ 車体 = 車体 ハンドル = ハンドル となりました。 後半の車体・ハンドルにも「トラックの」という言葉 を入れるには、どういうふうにメソッドを記述したらよいのでしょうか? ちなみに問題では、サブクラスだけ自分で記述し、スーパークラス・ 実行クラスはこのまま利用することとします。

質問者が選んだベストアンサー

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.3

mahojula様の言われているのは、こういうことだと思います。 public void createMotorcar(String t) { type = t; tire = type + "の" + tire; body = type + "の" + body; handle = type + "の" + handle; }

noname#205525
質問者

お礼

はい、もう解決済みなんですが、このように 記述して無事出力されました。 autyさんにはいつも返答いただき感謝しています。 ありがとうござます!!

その他の回答 (4)

  • mahojula
  • ベストアンサー率32% (21/65)
回答No.5

なるほど  redfox63様の考えが一番問題の意図を汲み取ってる気がします。。。  徹底的に詰めてくなら   public void createMortercar( String t ){     type = t;     setTire(t);     setHandle(t);    setBody(t); } public void setHandle(String value){ handle = value + "のハンドル"; } public void setBody(String value){ body = value + "のボディ"; }   public String getHandle(){     return handle;   }   public String getbody(){     return body;   }     みたいな感じでいかがでしょう。。?  

noname#205525
質問者

お礼

なるほど・・・ 実はもう解決済みで、自分の記述とはちょっと違うんですが、 教えてくださった方法でも記述して試してみます! ありがとうございました。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.4

サブクラス Motercarを スパークラスに習って記述せよ といった問題なのではないですか class Mortercar extends Car {   private String body = "";   private String handle = "";   private String type = "";   public String getHandle()   {     if ( type != "" ) {       // typeが設定されている場合       return type + "の" + handle;     }     return handle;   }   public String getbody()   {     if ( type != "" ) {       // typeが設定されている場合       return type + "の" + body;     }     return body;   }   public void createMortercar( String t )   {     type = t;     // ここでスーパークラス Carの setTireを呼ぶ     setTire( t );   } } と言った具合でいいと思いますよ

noname#205525
質問者

お礼

>サブクラス Motercarを スパークラスに習って記述せよ  といった問題なのではないですか はい、そうです。 「スーパークラス(変更しない)を継承するサブクラスMotercar を記述せよ」といった問題でした。 わざわざ書いてくださったんですね。 ありがとうございました!

  • mahojula
  • ベストアンサー率32% (21/65)
回答No.2

public String createMotorcar(String t) { type = t; tire = type + "のタイヤ"; return tire; } これ戻り値使ってないからvoid形で 良いのじゃない? フィールドは tireだけ入らないぽいですね。 このcreateMotorcarメソッドで  タイヤだけじゃなくすべての文字列を変更させてみましょうね。

noname#205525
質問者

お礼

>これ戻り値使ってないからvoid形で 良いのじゃない?  フィールドは tireだけ入らないぽいですね。 そうでした。戻り値を設定するつもりでStringにしたんですが、 別のメソッドで戻り値を設定したので、void型に書き直しました。 >このcreateMotorcarメソッドで  タイヤだけじゃなくすべての文字列を変更させてみましょうね。 ありがとうございます、このメソッドの記述を変更してみたら 実行出来ました。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

ぜんぜん見てないけど、スーパークラスに tire フィールドがあるなら、もうサブクラスに tire フィールドは要らんのでは?

noname#205525
質問者

お礼

その通り!!でした。 ありがとうございました。

関連するQ&A