-4
I i = new A();

インターフェイス I を使用してクラス A のオブジェクトをインスタンス化できるのはなぜですか? A obj=new A() を使用すべきではありませんか?

interface I {
    void f();
    void g();
}

class A implements I {
    public void f() { System.out.println("A: doing f()"); }
    public void g() { System.out.println("A: doing g()"); }
}

class B implements I {
    public void f() { System.out.println("B: doing f()"); }
    public void g() { System.out.println("B: doing g()"); }
}

class C implements I {
// delegation
    I i = new A();

    public void f() { i.f(); }
    public void g() { i.g(); }

    // normal attributes
    public void toA() { i = new A(); }
    public void toB() { i = new B(); }
}

ありがとう!

4

2 に答える 2

3

タイプ「I」の参照変数を使用して、タイプ「A」のオブジェクトを参照するにはどうすればよいですか?

なぜならA implements I(あなたのコードからの逐語的な引用)。

AinterfaceIで指定されたすべてを実行するため、参照の宣言された型と互換性がIあります。インターフェイスと継承により、オブジェクトは複数の型を持つことができます。

于 2012-04-13T12:32:16.857 に答える
1

これは、A が I インターフェースを実装しているため、タイプ I であるためです。

于 2012-04-13T12:32:26.690 に答える