2013-08-08 2 views
-7

이미 추상적 클래스를 제공하면서 인터페이스를 사용하는 이유는 무엇입니까?인터페이스와 추상 클래스의 차이점

interface A { 
    void show(); 
} 

class TestA implements A { 
    public void show(){} 
} 

abstract class B { 
    abstract void show(); 
} 

class TestB extends B { 
    public void show(){} 
} 
+0

추상 클래스 두 개를 상속받을 수 없으므로 인터페이스에 코드를 넣을 수 없습니다. –

답변

0

추상 클래스는 추상화되지 않은 메소드를 가질 수 있으므로 비 추상화 된 메소드에서 코드를 재사용 할 수 있습니다!

3

인터페이스 및 추상 클래스는 동작을 설명하는 인터페이스가 다르며 추상 클래스는 부분 구현을 정의합니다. 인터페이스에는 객체가 상속하는 클래스에 관계없이 필요한 메서드를 제공하는 모든 객체에서 구현할 수 있다는 이점이 있습니다.

요약 방법은 일반적으로 부분 구현을 제공하는 데 사용됩니다. 예를 들어, List를 구현하기 쉽게하기 위해서 (때문에), 대부분의 List 구현으로 필요한 메소드를 제공하는 AbstractList와 비교해, List 콜렉션의 동작을 정의하는 List 인터페이스가 있습니다. 리스트는 AbstractList로부터 상속 할 필요는 없지만, 많은 구현이하지만, List를 사용하는 코드는 그들이 사용하는 구현이 AbstractList를 확장하는지 여부에 상관하지 않습니다.

일부 사람들은 추상 클래스를 인터페이스 대신 사용하지만 일반적으로 이는 반 패턴으로 간주됩니다.

+0

ur 대답이 내 의심 고맙습니다. – user2663358

관련 문제