인터페이스 (interface)
- 클래스와 비슷하지만 메서드, 이벤트, 인덱서, 프로퍼티만을 가질 수 있다.
- 구현을 가질 수 없다.
- 인터페이스는 접근 제한 한정자를 사용할 수 없고 모든 것이 public으로 선언된다.
- 인터페이스를 상속하는 인터페이스도 만들 수 있다.
- C#에서는 클래스의 다중상속을 허용하지 않지만, 인터페이스의 다중상속은 허용한다.
다중상속은 불가능하지만,
포함(Containment) 기법을 통해 기능을 클래스로 만들어서 필드로 선언하는 방법도 있다.
추상 클래스 (abstract class)
- 인터페이스와 달리 구현을 가질 수 있다.
- 한정자는 명시하지 않으면 private로 선언된다. ( 일반 클래스와 동일 )
- 추상 메소드를 가질 수 있다.
- 추상 클래스를 상속하는 추상 클래스도 만들 수 있다.
추상 메소드 (abstract method)
- 추상 메서드는 반드시 public, protected, internal, protected internal 한정자 중 하나로 선언해야 한다.
- 추상 클래스를 상속받는 클래스는 반드시 추상 메서드를 구현해야 한다.
- 추상 클래스가 다른 추상 클래스를 상속하는 경우 구현하지 않아도 된다.
인터페이스와 추상 클래스 비교
인터페이스 | 추상 클래스 | |
인스턴스화 | X | X |
다중상속 | O | X |
구현부 | 가질 수 없다. | 가질 수 있다. (추상 메소드는 가질 수 없다) |
목적 | 여러 클래스 간의 규약을 통해 구현 객체가 같은 동작을 한다는 것을 보장 |
상속을 강제하기 위함 상위 클래스의 기능을 이용하거나 확장함 |
'🌍 C# Study > C# 기초' 카테고리의 다른 글
C# 복습하기 9) 배열, 컬렉션, 인덱서 (0) | 2021.04.11 |
---|---|
C# 복습하기 8) 프로퍼티 (0) | 2021.04.10 |
C# 복습하기 6) 클래스 (0) | 2021.04.09 |
C# 복습하기 5) 메소드 (0) | 2021.04.09 |
C# 복습하기 4) 코드의 흐름 제어 (역 for문, 역 반복문) (0) | 2021.04.09 |