2013-05-04 2 views
-1

추상 클래스에서 모든 메소드를 추상화하여 인터페이스처럼 작동 할 수 있으므로 인터페이스를 사용하는 이유는 무엇입니까 ?? 내가 올 수있는 이유 중 하나는 다중 클래스를 확장하지 않는 다중 인터페이스를 구현할 수 있다는 것이 었습니다. 어떤 디자인이나 성능과 관련된 것이 있습니까 ??모든 메소드를 추상화 할 수있는 동안 인터페이스를 사용하는 이유는 무엇입니까?

+3

당신은 질문에 직접 대답했습니다 ... – jlordo

+1

대답을 질문으로 작성하고 동의하십시오. – Maroun

+0

http://stackoverflow.com/questions/10040069/abstract-class-vs-interface-in-java –

답변

2

이미 답변을 얻었습니다. 인터페이스를 사용하면 클래스 사용이 작동하지 않는 여러 유형의 비헤이비어를 적용 할 수 있습니다. 예를 들어 클래스를 IComparable 및 INumerable로 적용 할 수 있지만 클래스를 사용하여 수행하려는 경우 불가능합니다.

0

디자인 현명한는 (List 인터페이스를 참조) 코드 동작/계약/기능 정의에 대한 Interface를 사용하고 일부 재사용 (상속을 통해) 메소드 구현을 atlease 한 Abstract 클래스를 사용하는 지침을 바람직하다.

비록 모두 abstract 방법을 가질 수 있지만, 그러한 경우에는 Interface이 바람직하다.

1

당신은 인터페이스가 허용하는 한 가지 사실을 이미 확인했습니다. 한 클래스는 여러 추상 클래스를 확장 할 수 없습니다.

어떤 디자인이나 성능 관련 일이 있습니까 ??

성능 차이는 없습니다.

추상 클래스 (사실상 모든 클래스)의 단일 상속 제한은 이것을 "디자인적인 것"으로 만든다고 주장 할 수 있습니다. 틀림없이 OO 설계에서 다형성의 사용을 심각하게 제한 할 것입니다.

는 (당신은 또한 당신이 인터페이스를 가지고 있지 않습니다 "인터페이스에 프로그래밍"의 격언을 따를 수 없다고 주장 할 수 있습니다. 그러나, 약한 인수 ... 전문 용어 애매한입니다.)

관련 문제