[c#] 클래스와 다중 상속
C#은 다중 상속을 지원하지 않는다. 다중 상속이란 하나의 클래스가 두 개 이상의 클래스로부터 상속을 받는 것을 의미한다. C#은 이러한 구조를 지원하지 않는 이유가 있으며, 이에 대한 이유를 살펴보겠다.
다이아몬드 문제
다중 상속은 다이아몬드 문제(Diamond Problem)라는 혼란을 야기할 수 있다. 이 문제는 많은 객체지향 언어에서 발생하는데, 한 클래스가 두 개 이상의 클래스로부터 상속을 받을 때, 각 상위 클래스가 동일한 메서드나 속성을 가지고 있을 경우 충돌이 발생한다. 이에 대한 해결책으로는 충돌을 해결하는 방법이 필요한데, 이는 복잡성을 증가시킨다.
인터페이스를 활용
C#에서는 인터페이스를 통해 다중 상속과 유사한 기능을 제공한다. 인터페이스는 클래스에서 구현할 수 있는 메서드, 프로퍼티, 이벤트, 인덱서의 명세를 정의하며, 클래스는 하나 이상의 인터페이스를 구현할 수 있다. 이를 통해 클래스 간에 다중 상속이 필요한 기능을 인터페이스를 사용하여 해결할 수 있다.
interface IShape
{
void Draw();
}
interface IColor
{
void FillColor();
}
class Circle : IShape, IColor
{
public void Draw()
{
// draw circle
}
public void FillColor()
{
// fill color
}
}
위 예제에서 Circle
클래스는 IShape
와 IColor
인터페이스를 모두 구현하여, 다중 기능을 제공할 수 있다.
C#의 다중 상속과 관련하여 인터페이스를 활용한 설명을 통해, 다중 상속을 지원하지 않는 이유와 이를 보완하는 방법에 대해 알아보았다.
참고 자료
- https://docs.microsoft.com/en-us/dotnet/csharp/
- https://en.wikipedia.org/wiki/Multiple_inheritance