-PR-
解決
済み

抽象クラス、インターフェイスについて

  • 困ってます
  • 質問No.77759
  • 閲覧数52
  • ありがとう数5
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 34% (19/55)

少し長いですが、以下にコードを書きました。これでコンパイルすると、13個ほどエラーが出て、何がなんだかわかりません。何が間違っているのでしょうか?よろしくお願いします。ちなみに本を見ながらの独学です。
//のりものインターフェイス
interface iVehicle
{
abstract void show();
}
//車くらす
class Car implements iVehicle
{
private int num;
private double gas;

public Car(int n, double g))
{
num = n;
gas = g;
System.out.println("ナンバー" + num +"ガソリン量" + gas +"の車を作成しました");
}
public void show()
{
System.out.println("車のナンバーは" + num +"です");
System.out.println("ガソリン量は" + gas +"です");
}
}
//飛行機クラス
class Plane extends Vehicle
{
private int flight;

public Plane(int f)
{
flight = f;
System.out.println("便" + flight +"の飛行機を作成しました");
}
public void show()
{
System.out.println("飛行機の便は" + flight +"です");
}
}
class sample8
{
public static void main(String args[])
{
iVehicle ivc[];
ivc = new iVehicle[2];

ivc[0] = new Car(1234, 20.5);

ivc[1] = new Plane(232);

for(int i=0; i<ivc.length; i++){
if(vc[i] instanceof Car)
ivc[i].show();
}
}
}
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル14

ベストアンサー率 50% (1122/2211)

「コンパイルができない」という話ですよね。また、タイプミスのレベルだと
思うんですが、とりあえず、全部指摘しておきます。

(1) for(int i=0; i<vc.length; i++){
(2)   if(vc[i] instanceof Car)
(3)     System.out.println((i+1)+"番目のオブジェクトはCarクラスです");
(4)   else
(5)     Sytem.out.println((i+1)+"番目のオブジェクトはCarクラスではありません");
(6)   }
(7) }

(1) vc.length → ivc.length
(2) vc[i] → ivc[i]
(5) Sytem → System
(6) 余分な }

といったところです。
お礼コメント
koujin

お礼率 34% (19/55)

ありがとうございした。しっかりと
指摘してもらえたのでなんとか直せました。
タイプミスって本人見つけにくいんですよね、
でもあまりにも自分は多すぎるので気をつけます。
投稿日時 - 2001-05-20 12:40:03
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

ほとんどがタイプミスですね。気を落ち着けてコンパイルエラーのメッセージを見ましょう。 //のりものインターフェース の行を第1行として、 % diff -w a.java.orig a.java 12c12 < public Car(int n, double g)) --- > public Car(int n, double g) かっこが一つ多いです。 25c ...続きを読む
ほとんどがタイプミスですね。気を落ち着けてコンパイルエラーのメッセージを見ましょう。
//のりものインターフェース の行を第1行として、

% diff -w a.java.orig a.java
12c12
< public Car(int n, double g))
---
> public Car(int n, double g)

かっこが一つ多いです。

25c25
< class Plane extends Vehicle
---
> class Plane implements iVehicle

iVehicle のタイプミス、と、iVehicle はインターフェースなので、
extends ではなく、implements ですね。

51c51
< if(vc[i] instanceof Car)
---
> if(ivc[i] instanceof Car)

変数のタイプミス。


動作させてみると、

% java sample8
ナンバー1234ガソリン量20.5の車を作成しました
便232の飛行機を作成しました
車のナンバーは1234です
ガソリン量は20.5です

とでます。
補足コメント
koujin

お礼率 34% (19/55)

ありがとうございました。タイプミスとは・・恥ずかしい限りです。
ところで、前回のは無事実行出来たのですが、類似コードでinstanceof演算子を以下のように使ったコードをコンパイルすると、シンボル処理できません。
シンボル:クラス・out
位置  :Systemのパッケージ
System.out.prinntln(***~else以下の分のところです と出ます。これはどういうことなのでしょうか?
教えてください。

for(int i=0; i<vc.length; i++){
if(vc[i] instanceof Car)
System.out.println((i+1)+"番目のオブジェクトはCarクラスです");
else
Sytem.out.println((i+1)+"番目のオブジェクトはCarクラスではありません");
}
}
投稿日時 - 2001-05-18 20:11:21


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ