"Abstract class"와 "interface"는 비슷한 개념으로, 인터페이스가 두 가지 중 더 추상적 인 개념입니다. 차별화 요소 중 하나는 추상 클래스가 필요할 때 파생 클래스에 대한 메소드 구현을 제공한다는 것입니다. 그러나 C #에서는 최근에 확장 메서드가 도입되어이 차별화 요소가 줄어들어 인터페이스 메서드에 대한 구현을 제공 할 수 있습니다. 또 다른 차별화 요소는 클래스가 하나의 추상 클래스 만 상속 할 수 있다는 것입니다 (즉, 다중 상속이 없음). 그러나 여러 인터페이스를 구현할 수 있습니다. 따라서 인터페이스의 제약이 적고 유연합니다. 따라서 C #에서 확장 메서드가있는 인터페이스 대신 언제 추상 클래스를 사용해야합니까?
인터페이스 + 확장 메소드 모델의 주목할만한 예는 LINQ이며, 여기서는 IEnumerable
여러 가지 확장 메소드를 통해 구현 되는 모든 유형에 대해 조회 기능이 제공됩니다 .