2010-08-21 3 views
1

가능한 중복 인터페이스를 사용하는 추상 클래스와를 사용 : 우리가 인터페이스를 사용해야하는 경우 C#에서
Abstract classes vs Interfaces
Interface vs Base classC#으로

안녕,

및 추상 클래스는 언제 사용해야합니까? 예제로 설명하십시오.

+3

@BlaXpiri t : 메소드 시작시 또는 처음 사용하는 곳에서 변수를 선언할지 여부에 대한 질문은 Java가 C++의 나쁜 복제본이라는 것을 증명합니까? 귀하의 의견은 무의미하게 도발적이며 C#에서 "나쁜"주요 지점이나 도요새 증거는 없습니다. –

+0

@Bla 안녕하세요, 귀하의 권장 질문에서 답변을 얻었습니다. 기술적으로 나는 차이점을 이해할 수 있으며, 추상 클래스를 사용하면 파생 클래스에서 기본 클래스 코드를 다시 사용하고 있습니다. 하지만 인터페이스를 작성하고 구현해야하는 이유는 무엇입니까? 어쨌든 나는 hte 인터페이스를 구현하는 클래스에서만 메소드를 정의 할 것이다. 따라서 두 클래스가 인터페이스를 구현하고 인터페이스에서 메서드를 정의하면 인터페이스를 올바르게 작성하지 않아도 클래스와 메서드를 사용할 수있게됩니까? 그렇다면 인터페이스를 사용할 때 어떤 이점을 얻을 수 있습니까? – SARAVAN

+0

이전의 코멘트를 읽으면서 머리가 아플 지어졌습니다. 그래서 저는 여러분에게 머리를 다 치게하는 많은 다른 링크가 들어있는 유용한 링크를 줄 것입니다 : http://duckduckgo.com/?q=interface+vs+abstract+class –

답변

0

인터페이스를 사용하면 계약 클래스를 설명 할 때 추상 클래스를 구현할 때 인터페이스가 파생 클래스간에 공유됩니다.

public abstract class Entity 
{ 
    public int Id { get; set;} 

    public bool IsNew { get { return Id == 0; } } 

    public abstract DoSomething(int id); // must be implemented by concrete class 
} 

인터페이스 경우 : 당신이 기본 기능과 구현을 덮어 쓸 수 있어야합니다 일부 속성/메소드를 구현하려면 사용의 예에

template patternStrategy pattern

+0

기술적으로 나는 그 차이를 이해할 수 있습니다. 추상 클래스 사용 파생 클래스에서 기본 클래스 코드를 재사용하고 있습니다. 하지만 인터페이스를 작성하고 구현해야하는 이유는 무엇입니까? 어쨌든 나는 그것을 구현하는 클래스에서만 메서드를 정의 할 것이다. 따라서 두 클래스가 인터페이스를 구현하고 인터페이스에서 메서드를 정의하면 인터페이스를 올바르게 작성하지 않아도 클래스와 메서드를 사용할 수있게됩니까? 그렇다면 인터페이스를 사용할 때 어떤 이점을 얻을 수 있습니까? – SARAVAN

4

추상 클래스가 될 수있다 어떤 기능을 구현하지 않고 클래스에 포함해야하는 속성/메소드를 정의하려고합니다.

public interface IRepository 
{ 
    object Get(int id); 
    IEnumerable<object> GetAll(); 
} 
+0

흠 ... 둘 다 해줄 래? http://stackoverflow.com/questions/2705163/c-abstract-classes-need-to-implement-interfaces에 대한 대답을 참조하십시오. –

+0

사용자 요구 사항을 충족하지 못함 ..... –

관련 문제