[C#] interface 와 abstract class 의 차이
2019. 12. 12. 10:00
728x90
반응형
C# 인터페이스와 추상클래스의 차이점
Interface | Abstract Class | |
접근 지정자 |
- 함수에 대한 접근 지정자를 가질수 없습니다. |
- 함수에 대한 접근 지정자를 가질 수 있습니다. |
구현 | - 구현이 아닌 서명만 가질 수 있습니다. | - 구현을 제공할 수 있습니다. |
속도 | - 인터페이스가 상대적으로 느립니다. | - 추상 클래스가 빠릅니다. |
인스턴스화 | - 인터페이스는 추상적이며 인스턴스화 할 수 없습니다. | - 추상클래스는 인스턴스화 할 수 없습니다. |
필드 | - 인터페이스는 필드를 가질 수 없습니다. | - 추상클래스는 필드와 상수를 정의 할 수 있습니다. |
메소드 | - 인터페이스에는 추상메소드만 있습니다. | - 추상클래스에는 비추상메소드가 있을 수 있습니다. |
- C#에서 클래스는 하나 이상의 인터페이스를 상속합니다. 그러나 클래스는 하나의 추상클래스만 상속 할 수 있습니다.
- C#에서 인터페이스는 생성자를 선언할 수 없습니다. 추상 클래스는 생성자를 선언할 수 있습니다.
- C#에서 인터페이스는 클래스의 외부 능력을 정의하는 데 사용됩니다. 추상 클래스는 클래스의 실제 ID를 정의하는 데 사용되며 객체 또는 동일한 유형으로 사용됩니다.
- C#에서 다양한 구현이 메소드 서명 만 공유하는 경우 인터페이스가 사용됩니다. 다양한 구현이 동일한 종류이고 동일한 동작 또는 상태를 사용하는 경우 추상 클래스가 사용됩니다.
- C#에서 새 메소드가 인터페이스에 추가 된 경우 모든 인터페이스가 구현 된 위치를 추적하고 해당 메소드의 구현도 추가해야합니다. 추상 클래스에서 새 메소드가 추가 된 경우 기본 구현을 추가 할 수있는 옵션이 있으므로 모든 기존 코드가 올바르게 작동합니다.
정리
C#은 데이터 추상화에 사용되었습니다. 여러 클래스가 인터페이스를 구현해야하는 경우 인터페이스가 추상 클래스보다 낫습니다. 인터페이스 멤버는 정적일 수 없으며, 추상 클래스의 유일한 완전한 멤버는 정적 일 수 있습니다.
C#은 다중 상속을 지원하지 않으며 인터페이스는 주로 다중 상속을 구현하는 데 사용됩니다.
클래스는 하나 이상의 인터페이스를 구현할 수 있으며 하나의 추상 클래스에서만 상속합니다.
인터페이스는 주로 메서드 나 기능을 구현할 필요가없는 경우에만 사용됩니다.
추상 클래스는 최소한의 기본구현을 필요할때 사용됩니다.
C# 인터페이스와 추상클래스는 요구 사항에 따라 응용 프로그램을 개발하는 데 많이 사용되는 객체 지향 프로그래밍 개념입니다. 그것은 더 편안하고 비즈니스 요구 사항에 맞는 기술 리드에 의해 순수하게 선택됩니다.
C# 인터페이스와 추상 클래스는 모두 사용하기 쉽고 모든 프로그래밍 언어에서 쉽게 배울 수 있습니다.
728x90
'Programming' 카테고리의 다른 글
[DI] 의존성 관리하기 (1) (0) | 2019.12.17 |
---|---|
[DI] 의존성과 계층화 (0) | 2019.12.16 |
[C#] 인터페이스 (interface)에 대한 정리 (0) | 2019.12.06 |
MOCK을 활용한 .NET 단위 테스트 (0) | 2019.12.05 |
BDD 중심의 시나리오 테스트 (0) | 2019.12.02 |