質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

変数の型 引数の引き渡しについて教えて頂きたいです

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 275

takuthan

score 1

class Main {

    public static void main(String[] args) {
        ShopKeeper suzuki = new ShopKeeper();
        CarToy car1 = new CarToy();
        CarToy car2 = new CarToy();
        TrainToy train1 = new TrainToy();

        suzuki.name_ = "鈴木";    
        car1.code_ = "c001";
        car1.price_ = 500;
        car2.code_ = "c002";
        car2.price_ = 500;
        train1.code_ = "t001";
        train1.price_ = 700;

        //価格チェックの実行
        suzuki.checkPrice(car1, car2, train1);

        //デモの実行
        suzuki.doDemo(car1, car2, train1);
    }
}
public class CarToy {
    String    code_;        //商品コード
    int        price_;        //価格

    //走る
    public void go(){
        System.out.println("ブロローッ");
    }

    //ライトを点ける
    public void light(){
        System.out.println("ピカーッ");
    }
}
public class ShopKeeper {
    String name_;        //名前

    //価格をチェックする
    public void checkPrice(CarToy kuruma1, CarToy kuruma2, TrainToy densya1){
        System.out.println("私が店長の" + name_ + "です。これから価格をチェックします。");
        System.out.println("商品コード:" + kuruma1.code_ 
                + "の価格は" + kuruma1.price_ + "円です。");
        System.out.println("商品コード:" + kuruma2.code_ 
                + "の価格は" + kuruma2.price_ + "円です。");
        System.out.println("商品コード:" + densya1.code_ 
                + "の価格は" + densya1.price_ + "円です。");
        System.out.println("\n");
    }

    //デモする
    public void doDemo(CarToy kuruma1, CarToy kuruma2, TrainToy densya1){
        System.out.println("私が店長の" + name_ + "です。これからデモします。");
        System.out.println("クルマ1を走らせます。");
        kuruma1.go();
        System.out.println("クルマ2を走らせます。");
        kuruma2.go();
        System.out.println("電車を走らせます。");
        densya1.go();        
        System.out.println("\n");
    }
}
public class TrainToy {
    String    code_;        //商品コード
    int        price_;        //価格

    //走る
    public void go(){
        System.out.println("ガタンゴトン");
    }

    //警笛を鳴らす
    public void horn(){
        System.out.println("プォー!");
    }
}
Main.java:20: error: incompatible types: CarToy cannot be converted to String
        suzuki.checkPrice(car1, car2, train1);
                          ^
Main.java:23: error: incompatible types: CarToy cannot be converted to String
        suzuki.doDemo(car1, car2, train1);
                      ^
ShopKeeper.java:7: error: cannot find symbol
        System.out.println("商品コード:" + kuruma1.code_ 
                                             ^
  symbol:   variable code_
  location: variable kuruma1 of type String
ShopKeeper.java:8: error: cannot find symbol
                + "の価格は" + kuruma1.price_ + "円です。");
                                  ^
  symbol:   variable price_
  location: variable kuruma1 of type String
ShopKeeper.java:9: error: cannot find symbol
        System.out.println("商品コード:" + kuruma2.code_ 
                                             ^
  symbol:   variable code_
  location: variable kuruma2 of type String
ShopKeeper.java:10: error: cannot find symbol
                + "の価格は" + kuruma2.price_ + "円です。");
                                  ^
  symbol:   variable price_
  location: variable kuruma2 of type String
ShopKeeper.java:11: error: cannot find symbol
        System.out.println("商品コード:" + densya1.code_ 
                                             ^
  symbol:   variable code_
  location: variable densya1 of type String
ShopKeeper.java:12: error: cannot find symbol
                + "の価格は" + densya1.price_ + "円です。");
                                  ^
  symbol:   variable price_
  location: variable densya1 of type String
ShopKeeper.java:20: error: cannot find symbol
        kuruma1.go();
               ^
  symbol:   method go()
  location: variable kuruma1 of type String
ShopKeeper.java:22: error: cannot find symbol
        kuruma2.go();
               ^
  symbol:   method go()
  location: variable kuruma2 of type String
ShopKeeper.java:24: error: cannot find symbol
        densya1.go();        
               ^
  symbol:   method go()
  location: variable densya1 of type String
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output

ShopKeeperクラスの中の
checkPrice(CarToy kuruma1, CarToy kuruma2, TrainToy densya1)と 
doDemo(CarToy kuruma1, CarToy kuruma2, TrainToy densya1)
の部分について質問です。
kuruma1とdensya1の前に置かれるデータ型はStringだと思ったのですがエラーが出ます。
なぜStringではなくCarToyやTrainToyといったクラス型がデータ型として置かれるのでしょうか?
一番下にエラー内容を追記致しました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • dodox86

    2020/07/23 14:37

    > 私が伺いたいこととして()内では(データ型 変数)の順番になると思うのですがそのデータ型部分になぜCatToyとTrainToyがくるのか教えて頂きたいです

    何が分からないのか、どうもよく分かりません。例えばShopKeeperクラスの
    checkPrice(CarToy kuruma1, CarToy kuruma2, TrainToy densya1) メソッドは、
    仮引数の宣言でCarToyとTrainToyクラスを受け取るよう定義しているから、なのですが。
    Stringもクラスなので、扱いは同じです。メソッドの引数ではクラスを指定できないと思い込んでいませんか。

    キャンセル

  • quickquip

    2020/07/24 09:23

    いま
    エラーがでないコード
    エラーメッセージ
    という他人が読んでもわからない質問の構造になっているので
    エラーがでないコード一式
    修正してエラーが出るようになった部分コード
    エラーメッセージ
    としてもらえるといいかと思います。
    (ここは質問への追記・修正欄ですので、ここに情報を追加しないようにしてください。追記・修正の依頼に対しての疑問はここでもいいでしょうけれども、質問への情報の追加は質問の修正でおこなってください)

    キャンセル

  • takuthan

    2020/07/24 13:55

    dodox86様
    >仮引数の宣言でCarToyとTrainToyクラスを受け取るよう定義しているから、なのですが。
    Stringもクラスなので、扱いは同じです。メソッドの引数ではクラスを指定できないと思い込んでいませんか。
    私が知りたかったのはまさにこの部分です。他の皆様、私の質問が伝わりにくく大変申し訳ございません。dodox86様の答えで一歩前進出来ました。ありがとうございます。

    キャンセル

回答 1

0

なぜStringではなくCarToyやTrainToyといったクラス型がデータ型として置かれるのでしょうか?

Stringも「クラス型」の一種です。完全修飾名java.lang.Stringです。
こういう「クラス型」を置きたいがためにクラスを作っているといってもいいくらいです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る