코딩/C#

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

남대현 2024. 7. 10. 00:25
반응형

인터페이스(interface)

마소의 공식 설명

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

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

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

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

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

 

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

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

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

반응형