dポイントプレゼントキャンペーン実施中!

“値を変更できるフィールドがもてない”・“抽象クラスしかもてない”のに何の為に記述するんだろう?と思って、インターフェイスを入力せずに実行してみたのですが、入力してもしなくても同じ結果が出ました。 同じ結果が出るならなぜ必要なんですか?

************* コード ****************************************
//のりものインターフェイス
interface iVehicle{
void vShow();
}
//材料インターフェイス
interface iMaterial{
void mShow();
}
//車クラス
class Car implements iVehicle,iMaterial{
private int num;
private double gas;

public Car(int n, double g){
num = n;
gas = g;
System.out.println("ナンバー"+ num + "ガソリン量"
+gas + "の車を作成しました。");
}
public void vShow(){
System.out.println("車のナンバーは" + num +"です。");
System.out.println("ガソリン量は" + gas + "です。");
}
public void mShow(){
System.out.println("車の材質は鉄です。");
}
}
class Sample1{
public static void main(String[] args){
Car car1 = new Car(1234, 20.5);
car1.vShow();
car1.mShow();
}
}
**************************************************************
<実行結果>
「ナンバー1234ガソリン量20.5の車を作成しました。
 車のナンバーは1234です。
 ガソリン量は20.5です。
 車の材質は鉄です。              」
インターフェイスを記述してもしなくても、同じく上記の結果が
出ました。

※ちなみに抽象クラスもいったい何なのかよく分りません。

A 回答 (12件中11~12件)

質問のコードはインタフェースを理解するためには無意味です。


> class Sample1{
> public static void main(String[] args){
> Car car1 = new Car(1234, 20.5);
+ iVehicle vehicle1 = car1;
+ iMaterial material1 = car1;
> car1.vShow();
< vehicle1.vShow();
> car1.mShow();
< material1.mShow();
> }
> }
このように少なくともインタフェース型の変数を使わないと。
実際に使う場合はインタフェースを継承するクラスも複数あるのが普通です。

インタフェースはJavaにおいて多重継承を実現するための手段です。
多重継承はオブジェクト指向で重要な概念ですが、プログラミング言語処理系での実装には難しい部分があり、また使いこなすのにも難しい部分があります。
このためJavaでは一般的なクラスによる多重継承はなくし、インタフェースにより多重継承の一部機能だけを実現しています。
    • good
    • 0
この回答へのお礼

ありかとうございます。
でも初心者の私には難しい言葉ばかり・・・
言葉の意味を調べながら読み直してみます。

ただ出来れば2つ程教えていただけないでしょうか?
◆よく「オブジェクト指向」という言葉を聞きますが、どういう意味
 なんですか?
◆+ iVehicle vehicle1 = car1;
 + iMaterial material1 = car1;
  ↑この部分、+をつける理由って・・・(?)

お礼日時:2008/03/17 13:19

さて、このインターフェースですが私はネット上や参考書でまともな説明を見たことがありません。

大半は著者が理解していないことが多いです。よってインターフェースが理解できないのは当たり前なので心配いりません。
私はまずなぜジェームズゴスリングがこのような仕組みを取り入れたかを考えました。そもそもオブジェクト指向とは何か。深く考えました。するとこのオブジェクト指向に隠された社会的陰謀が見えてきます。
Javaに限らずあなたもこの「インターフェイス」の恩恵を受けています。色々なところで受けています。どこで受けているか考えてみましょう。見つかった瞬間すべてを理解できます。
あなたはとてつもない喜びを感じるでしょう。
その喜びをJavaに実装したジェームズの気持ちを共有することになるでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!