2016-07-04 15 views
0

ここで、Bのオブジェクトを作成し、これをInterfaceの参照変数に割り当てました。実際にはどういう意味ですか? インタフェースの目的は、クラスによって実装するために使用されます。 実際にはどういう意味ですか?インスタンス化されたオブジェクトへのインタフェース配列の割り当ての使用

interface I1{} 

class A implements I1{} 
class B implements I1{} 
class C extends B 
{} 
class D{} 





public class lab1 
{ 
    public static void main(String[] args) 
    { 

     I1 i1[] = new B[4]; 
     i1[0] = new A(); 
     i1[1] = new C(); 
     i1[2] = new B(); 
     //i1[3] = new D(); 

    } 

} 

答えて

0

は、それはあなたが(そのインターフェイスのいくつかのメソッドを呼び出すことによって)、アレイ内のすべてのインスタンスで同じ操作を実行することができます。例えば

for (I1 inst : i1) { 
    i1.doSomething(); // where doSomething() is a method declared by the interface I1 
} 

それはあまり抽象的にするために、ここではより具体的な例だ - インターフェースがShapeと呼ばれ、それがdraw()メソッドを持っている場合、あなたが書くことによって、すべての図形を描くことができます。

for (Shape shape : shapesArray) { 
    shape.draw(); 
} 

このコードは、配列に格納されている実際のインスタンスがサークル、長方形またはポリゴンであるかどうかは関係ありませんが、すべてがShapeインターフェイスを実装している場合は注意してください。

0

コードは

I1 i1[] = new I1[4]; // Change this 
    i1[0] = new A(); 
    i1[1] = new C(); 
    i1[2] = new B(); 

最初の行がI1オブジェクトへの参照の配列を作成しなければなりません。

コンクリート型B.

0

の基準にタイプAのオブジェクトを割り当てることができないので、他のラインは、タイプA, C, B, D.コードが動作しない


の具体I1オブジェクトを作成します車のリスト(駆動方式とのインターフェース)bmw、audi、またはドライバーなし車。あなたが必要なのはドライブにできるはずですので、drive()メソッドを呼び出すことができます。チェックpolymorhismおよびinheritanceおよびis-a&has-a testing

関連する問題