본문 바로가기
코딩/C#

C#) 인터페이스(interface)란? +C# 최신 버전에서의 변경점

by 남대현 2024. 7. 10.
반응형

인터페이스(interface)

마소의 공식 설명

인터페이스에는 비추상 클래스 class 또는 struct가 구현해야 하는 관련 기능 그룹에 대한 정의가 포함되어 있습니다. 인터페이스에서는 구현이 있어야 하는 static 메서드를 정의할 수 있습니다. 인터페이스는 멤버에 대한 기본 구현을 정의할 수 있습니다. 인터페이스에서는 필드, 자동 구현 속성, 속성과 유사한 이벤트 등과 같은 인스턴스 데이터를 선언할 수 없습니다.

예를 들어 인터페이스를 사용하면 여러 소스의 동작을 클래스에 포함할 수 있습니다. 해당 기능은 언어가 클래스의 여러 상속을 지원하지 않기 때문에 C#에서 중요합니다. 또한 구조체는 다른 구조체나 클래스에서 실제로 상속할 수 없기 때문에 구조체에 대한 상속을 시뮬레이트하려는 경우 인터페이스를 사용해야 합니다.

그렇다면 추상 클래스와 뭐가 다른가?

주로 언급되는 차이점으로는 (추상클래스를 기준으로 인터페이스가 다른점을 작성)
1. 상속 : 클래스와 달리 다중 상속이 가능
2. 구현 : 함수의 구현부를 작성할 수 없음
3. 필드(변수) : 필드를 가질 수 없음
4. 접근 제한자 : 모두 public이며, 제한자를 사용 불가.
5. 생성자 : 생성자를 가질 수 없음
6. 스태틱 : 스태틱 메서드 및 프로퍼티를 가질 수 없음
이 있다.

*속성은 인터페이스도 가능하다. (int Integer{ get; set; })

 

그렇다면 C# 최신에서는?

C# 8 에서는 "디폴트 인터페이스 메서드" 기능과 "스태틱 멤버" 기능이 추가되었다.
디폴트 인터페이스 메서드는 기존에 불가능했던 함수의 구현부 작성을 가능하게 해주며,
스태틱 멤버는 말 그대로 인터페이스에 스태틱 메서드와 프로퍼티를 추가할 수 있도록 변경되었다.

코딩을 하다보니 인터페이스에 이 기능은 생각해보니까 여기저기서 비슷하게 정의되어 그냥 추상 메서드로 사용하고 싶었지만 다중상속이 불가능해서 클래스로 바꿀수 없어 그냥 억지로 사용했던 경험이 좀 있는데 이러한 문제가 해결되었다.

반응형

댓글