- ベストアンサー
メソッドの呼び出し方
サブクラスを記述する下記のプログラムについて質問します。 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); } } これを実行したら、 タイヤ = タイヤ 車体 = 車体 ハンドル = ハンドル トラックの作成!! タイヤ = トラックのタイヤ 車体 = 車体 ハンドル = ハンドル となりました。 後半の車体・ハンドルにも「トラックの」という言葉 を入れるには、どういうふうにメソッドを記述したらよいのでしょうか? ちなみに問題では、サブクラスだけ自分で記述し、スーパークラス・ 実行クラスはこのまま利用することとします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
mahojula様の言われているのは、こういうことだと思います。 public void createMotorcar(String t) { type = t; tire = type + "の" + tire; body = type + "の" + body; handle = type + "の" + handle; }
その他の回答 (4)
- mahojula
- ベストアンサー率32% (21/65)
なるほど 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; } みたいな感じでいかがでしょう。。?
お礼
なるほど・・・ 実はもう解決済みで、自分の記述とはちょっと違うんですが、 教えてくださった方法でも記述して試してみます! ありがとうございました。
- redfox63
- ベストアンサー率71% (1325/1856)
サブクラス 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 ); } } と言った具合でいいと思いますよ
お礼
>サブクラス Motercarを スパークラスに習って記述せよ といった問題なのではないですか はい、そうです。 「スーパークラス(変更しない)を継承するサブクラスMotercar を記述せよ」といった問題でした。 わざわざ書いてくださったんですね。 ありがとうございました!
- mahojula
- ベストアンサー率32% (21/65)
public String createMotorcar(String t) { type = t; tire = type + "のタイヤ"; return tire; } これ戻り値使ってないからvoid形で 良いのじゃない? フィールドは tireだけ入らないぽいですね。 このcreateMotorcarメソッドで タイヤだけじゃなくすべての文字列を変更させてみましょうね。
お礼
>これ戻り値使ってないからvoid形で 良いのじゃない? フィールドは tireだけ入らないぽいですね。 そうでした。戻り値を設定するつもりでStringにしたんですが、 別のメソッドで戻り値を設定したので、void型に書き直しました。 >このcreateMotorcarメソッドで タイヤだけじゃなくすべての文字列を変更させてみましょうね。 ありがとうございます、このメソッドの記述を変更してみたら 実行出来ました。
- koko_u_
- ベストアンサー率18% (459/2509)
ぜんぜん見てないけど、スーパークラスに tire フィールドがあるなら、もうサブクラスに tire フィールドは要らんのでは?
お礼
その通り!!でした。 ありがとうございました。
お礼
はい、もう解決済みなんですが、このように 記述して無事出力されました。 autyさんにはいつも返答いただき感謝しています。 ありがとうござます!!