C#

Interface

monstro 2024. 8. 25. 20:25
728x90
반응형

C#에서는 다중상속을 금지합니다.

그 이유로는 다중 상속 상황에서 이름이 동일한 함수가 존재하는 경우 컴파일러가 함수를 호출할 때

어느 함수를 호출해야 하는지 판단할 수 없는 소위 다이아몬드 문제가 발생할 수 있기 때문입니다.

 

하지만, 다중상속이 되지 않는 상황에서 이런 다중상속의 제약도 해결하면서 설계를 유연하게 하는 방법이 있습니다.

그것이 바로 Interface인데 기존의 C++의 추상 클래스와 동일하게 인터페이스의 함수도 반드시 재정의해야 하지만,

다중상속의 제약에는 포함되지 않아 원하는 만큼 사용할 수 있습니다.

 

인터페이스를 사용하면 클래스의 인스턴스를 인터페이스 형으로 사용하거나 클래스 간의 결합을 낮추는 등의 

효율적인 작업이 가능합니다. 이러한 특징 때문에 C++ 베이스인 언리얼 엔진에서도 채택한 기능 중 하나입니다.

 

1) Interface의 사용방법

인터페이스는 클래스와 비슷하지만 특별한 규칙이 존재합니다.

 

interface 인터페이스 이름

{

   함수타입 함수명();

}

 

과 같이 선언되어야 하며 이때, 인터페이스의 이름 앞에 대문자 I를 붙여 인터페이스임을 나타내는 것이 좋습니다.

이제 인터페이스의 간단한 사용 예제를 한번 알아보겠습니다.

 

2) Interface의 사용예제

 

클래스들의 구성은 위와 같습니다.

이제 Main에서 한번 사용해보겠습니다.

 

 

실행해보면

 

 

위와 같은 결과를 얻을 수 있습니다.

인터페이스를 사용하면 다중상속의 제약 없이 원하는 기능을 클래스에게 부여할 수 있습니다.

또 클래스들간의 결합이 강해지는 것을 막으면서 유연한 관계를 설정할 수 있게 됩니다.

728x90
반응형

'C#' 카테고리의 다른 글

attribute와 reflection  (0) 2024.09.07
C#의 예외처리  (0) 2024.09.07
Nullable 키워드  (0) 2024.08.31
프로퍼티  (0) 2024.08.31
Generic  (0) 2024.08.25