2012-08-05 5 views
3

같은 두 개의 인터페이스를 구현하는 클래스의 인스턴스를 전달 나는 경우 : 두 개의 서로 다른 아형

public interface One{ 
    public void method1(); 
} 

public interface Two{ 
    public void method2(); 
} 

public class AClass implements One, Two{ 

} 

public static void aDiffMethod1(One o){ 
    o.method1(); 
} 

public static void aDiffMethod2(Two t){ 
    t.method2(); 
} 

public static void main(String[] args){ 
    AClass a = new AClass(); 
    aDiffMethod1(a); 
    aDiffMethod2(b); 
} 

가끔 내 코드에서 나는 그것이 인터페이스를 하나의 하위 유형 인 사실을 이용하여 AClass의 인스턴스를 전달합니다 (즉, 메서드의 매개 변수 형식이 One이고 AClass 형식을 전달할 것입니다.) 다른 경우에는 AClass 개체에 인터페이스 하위 형식을 알기 위해 두 번 전달할 수 있습니다 는 Two이므로 AClass를 Two의 하위 유형으로 전달합니다.

AClass의 인스턴스를 다른 인터페이스의 하위 유형이라는 이유로 다른 메소드에 전달하는 것이 좋습니까?

인터페이스로 프로그래밍하는 것이이게 무슨 뜻인가요? 괜찮습니까?

+0

좋은 질문 ... –

답변

2

예, 이것이 인터페이스의 요점입니다.

인터페이스 One 만 수락하는 메서드는 method1을 호출하기 때문에 안전합니다. Two 인터페이스 만 받아들이는 메서드는 method2만을 호출하므로 다시 안전합니다.

+0

그리고 이것은 인터페이스 프로그래밍에 문구가 무엇을 의미합니까? – user997112

+0

예, 맞습니다. 객체를 마치 인터페이스 인 것처럼 사용하기위한 프로그래밍. – Geoffrey

2

예, 괜찮습니다. 메소드가 인터페이스 구현을 예상하면 AClass가 해당 계약을 이행합니다.

구현보다는 인터페이스에 프로그래밍하는 것이 기본 동작 클래스를 사용자 인터페이스에 그룹화하지 않고 인터페이스로 그룹화하는 디자인 방식입니다.

관련 문제