본문 바로가기

컴퓨터 언어

[C#] 인터페이스

[Interface]

 

C#에서 인터페이스는 클래스나 구조체가 구현해야 하는 동작을 정의하는 추상 형식을 뜻한다. 이 말은 인터페이스를 포함하는 클래스는 반드시 인터페이스에서 정의하는 구성 요소들을 구현해야한다는 것으로 반대로 말하자면 인터페이스를 가지는 클래스는 인터페이스의 구성 요소들이 포함되어 있다는 것을 뜻한다.

 

C++에서는 클래스의 다중 상속을 지원했던 대신 인터페이스라는 개념이 없었지만 C#에서는 클래스의 다중 상속을 막고 대신 함수의 정의만을 갖고 있는 인터페이스의 다중 상속을 지원한다.

여기서 인터페이스와 추상 클래스의 차이점을 보자면 추상 클래스는 순수 가상 함수를 비롯한 일반적인 멤버들을 포함할 수 있지만 인터페이스는 구현을 포함하지 않고 함수의 정의 부분만을 갖는다. 또한 앞서 말했듯이 추상 클래스는 다중 상속이 불가능하지만 인터페이스는 여러 인터페이스들을 상속할 수 있다.

이러한 차이들은 인터페이스가 서로 다른 클래스 간에 공통된 동작을 구현하기 위한 계약을 정의하는 데 사용된다는 점과 추상 클래스도 클래스 간의 계층 구조를 정의하고 관련된 구현을 공유하기 위해 사용된다는 점에서 비롯된다.

이러한 차이점들이 존재하기 때문에 우리가 제어문과 반복문으로 while문과 for문 어느 하나만을 사용하지 않듯이 추상 클래스와 인터페이스는 필요성에 따라 각자 취사 선택하여 사용할 수 있다.

 

인터페이스의 선언과 함수의 매개변수로 인터페이스를 포함하는 객체를 받기
구현부는 클래스에서 담당하기 때문에 같은 인터페이스를 받더라도 다른 반응을 나타낼 수 있다

'컴퓨터 언어' 카테고리의 다른 글

[C#] 델리게이트와 이벤트  (0) 2023.11.10
[C#] 구조체와 클래스  (0) 2023.11.06
[C++] 다형성, 추상성  (0) 2023.11.04
[C++] OOP - 캡슐화, 상속  (0) 2023.11.01
[C++] 반복문과 연습  (0) 2023.10.31