* abstract class vs interface
| abstract class | interface | |
| 다중 상속 | 불가능하다. | 가능하다. |
| 필드(field) // 인스턴스와 관련있는 것들 |
포함할 수 있다. | 일반적으로 포함할 수 없다. // C# 8.0부터 인스턴스와 관련없는 정적 필드와 같은 것들은 포함할 수 있다. |
| 기본 구현(default implementation) | abstract가 붙은 멤버는 기본 구현을 지원하지 않는다. | 일반적으로 불가능하다. // C# 8.0 부터 가능하다. |
| 멤버의 abstract 키워드 | abstract, non-abstract 멤버를 가질 수 있다. | 모두 public abstract이다. |
| 선언 방식 | abstract class Name { /* ... */ } | interface Name { /* ... */ } |
| 접근 제한 한정자 | 원하는대로 선언 가능하다. | 모두 public으로 선언된다. |
| 개념(concept) | extend 로 표현된다. | implement 로 표현된다. |
'C#' 카테고리의 다른 글
| [C#] 인터페이스(interface) (0) | 2022.06.28 |
|---|---|
| [C#] abstract (0) | 2022.06.28 |
| [C#] const, readonly (0) | 2022.06.28 |
| [C#] ref, out (0) | 2022.06.28 |
| [C#] 강력한 형식 언어(Strongly Typed Language) (0) | 2022.06.28 |