2013-03-01 4 views
1

Pls는 참조에 대한 링크를 찾을 수 : "Strategy for success" article of JavaWorld우리는 추상 클래스에 인터페이스를 구현하는 이유

내 질문은 왜 우리가 별도의 인터페이스를 가지고 우리는 추상 클래스에서 그 추상 메소드를 선언 할 때, 추상 클래스에서 구현해야합니까 그 자체? 이미지

전, 우리는 인터페이스를 사용하는 이유

public interface Border(){ 
     paintBorder(); 
     getBorderInsets(); 
     isBorderOpaque(); 
} 


public class abstract AbstractBorder implements Border(){ 
..... 
} 

대신 우리가

public class abstract AbstractBorder { 
     paintBorder(); 
     getBorderInsets(); 
     isBorderOpaque(); 
} 

같은 추상 클래스를 가질 수 있습니다? 필요성은 무엇입니까?

+0

[Interface vs Abstract Class (일반 OO)] 가능한 복제본 (http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo) –

답변

0

이것은 자바로 시작할 때 생각한 것입니다. 매우 상세한 답변은 here입니다. 더 이상의 설명이 필요하면 의견을 말하십시오.

0

클래스가 아닌 인터페이스에 좋은 프로그래밍입니다. 전략 패턴에서 아이디어는 "전략"의 인터페이스를 가지며 런타임에는 코드의 나머지 부분을 변경하지 않고 변경하지 않고 전략 (인터페이스를 구현하는 클래스)을 변경할 수 있습니다.

이것은 코드를 더 유연하고 강하게 만드는 SOLID 원칙의 좋은 시작입니다.

저는 exemple of the Strategy Pattern in my github이며 "Cavaleiro"(영어 기사) 개체는 런타임에 변경됩니다.

나는 인터페이스를 만들고 클래스의 객체가 아니라 그것을 사용하여 쉽게 "전략"을 변경할 수 있습니다.

1

아마도 인터페이스는 언급 한 것과 다른 추상 클래스에있을 수있는 동작을 정의합니다. 좋은 예가 IDisposable 인터페이스입니다.

추상 클래스 자체에서 이러한 메서드를 선언하기로 결정한 경우이 추상 메서드에서 구체적인 클래스를 구현할 때 많은 혼란을 감수해야 할 수도 있습니다. 또한 추상 클래스 내에서 비헤이비어를 지정할 수 있으므로이 비헤이비어는 구현 클래스에서 다시 사용할 수 있습니다.

관련 문제