2011-12-16 9 views
4

多型の概念を使って、変数の型をインタフェースの型と宣言することができると思います。例:Animalがインターフェースの場合、次のコードを記述できます。インターフェイスもタイプであるとはどういう意味ですか?

Animal simba = new Lion(); 

私はこのことを正しく理解していますか?助けてくれてありがとう。

+1

はい、 'Lion'クラスが' Animal'インタフェースを実装していると仮定して、正しいと思います。 – aroth

+1

私はあなたがここで探しているものを正確にはわかりません。答えは現在「はい」です。 –

+0

私によく見えます。投票1回以上 –

答えて

1

すべてのオブジェクトは、タイプ(および値)を持っている*多くの種類があります。プリミティブ型(のようなint)、クラス型(のようなstring)、列挙型、配列(そしておそらく私はいくつかを忘れてるが)。

用語「インタフェース」は、クラス型の特定の一種を指す:それにはメンバオブジェクト(安全定数)と抽象あるすべてが唯一のパブリックメソッドを持っていないクラスである**

。だから、インターフェースは特殊な種類のクラスで、特別な種類のクラスです。だからインタフェースタイプです。あなたの例では、AnimalLionは両方とも型になり、もう一方は変換可能です。

*)ゆるやかに、このタイプは「これの構造は何ですか」と表示され、値は「これの内容は何ですか」と表示されます。それが不可能である一方、これはJavaで複数の一般的なものから継承するために、複数からインターフェースを継承することができます。5.

**)、5のタイプはintであり、その価値は十分です...クラス。

3

interfaceは、その実装タイプを取ることができる点で、Javaのsuperclassと同様に動作できます。

具体例では、具体的にはをinterfaceと定義しており、Lionが実装しています。

このため、LionAnimalを作成することができます。コードは次のようになります。

interface Animal { 
    //do interfacing stuff 
} 

class Lion implements Animal { 
    public Lion() { 
    //... 
    } 
    //do implementing stuff 
} 

class Driver { 
    Animal simba = new Lion(); // This works because of polymorphism. 
} 

あなたは、これがpolymorphismの一例であると言っに、しかし、正しいです。

関連する問題