Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

初心者です

サブクラスのメソッドを呼び出そうとするとエラーがでてしまいます、、
理由と解決策を教えて頂きたいです。おねがいします。
したの「ここです」って書いているところです。


class Car
{
 protected int num;
 protected double gas;

 public Car()
 {
  num=0;
  gas=0.0;
  System.out.println("車を作成しました。");
 }
 public void setCar(int n, double g)
 {
  num=n;
  gas=g;
 }
 public void show()
 {
  System.out.println("ナンバーは"+num+"です。");
  System.out.println("ガソリンは"+gas+"です。");
 }
}

class RacingCar extends Car
{
 private int power;

 public RacingCar()
 {
   System.out.println("レーシングカーを作成しました。");
 }
 public void setRacingCar(int n, double g,int p)
 {
  setCar(n,g);
  power=p;
  
  System.out.println("レースカーのパワーは"+power+"です。");
 }
 public void show()
 {
  super.show();
  System.out.println("パワーは"+power+"です。");
 }
}
class Sample111
{
 public static void main(String[]args)
 {
   Car[] cars; 
   cars = new Car[3];

   cars[0] = new Car();
   cars[1] = new RacingCar();
   cars[2] = new RacingCar();

   cars[0].setCar(1222,20.5);
   cars[1].setRacingCar(2000,50.5,4);// ここです。
   cars[2].setRacingCar(2001,80.5,5);//ここです。

   for(int i=0; i<cars.length; i++)
   {
   cars[i].show();
   }

 }
}

4

回答

83650

閲覧

4件の回答

評価

0

エラーメッセージは読みましたか?

評価

0

以下のようなエラーがでるのですが、解決できません。

Sample11-1.java:57: エラー: シンボルを見つけられません
   cars[1].setRacingCar(2000,50.5,4);
          ^
  シンボル:   メソッド setRacingCar(int,double,int)
  場所: クラス Car
Sample11-1.java:58: エラー: シンボルを見つけられません
   cars[2].setRacingCar(2001,80.5,5);
          ^
  シンボル:   メソッド setRacingCar(int,double,int)
  場所: クラス Car
エラー2個

評価

0

サブクラスのメソッドはサブクラスにしかありませんから
Car クラスの変数に対してでは setRacingCar が見つかりません。

((RacingCar)cars[1]).setRacingCar( . . . のようなキャストが必要です。

また、cars[1] が RacingCar として扱えるインスタンスを参照してるかどうか
あやふやな場合はあらかじめ確認か、例外処理が必要でしょう。

評価

0

仙人さん

解決できました。本当にありがとうございます。

勉強になります。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。