2012-04-13 4 views
-4
I i = new A(); 

클래스 A의 객체를 인스턴스화하기 위해 인터페이스 I를 사용할 수있는 이유는 무엇입니까? obj = new A()를 사용해서는 안됩니까?클래스 인스턴스화 Java

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(); } 
} 

고마워요!

+5

질문/문제가 무엇인지 명확하게 설명해 주시겠습니까? – beny23

답변

3

'A'유형의 참조 변수를 'I'유형의 객체로 사용하려면 어떻게해야합니까?

A implements I (귀하의 코드에서 그대로 인용).

A은 모두 I 인터페이스에 의해 지정되므로 참조의 선언 된 유형 I과 호환됩니다. 인터페이스와 상속을 통해 객체는 여러 유형을 가질 수 있습니다.

+0

그래서 나는 A의 수퍼 클래스 (부모)로 행동합니까? –

1

A가 I 인터페이스를 구현하므로 유형이 I이기 때문입니다.

+0

감사! 이제 알겠습니다 –

관련 문제