본문 바로가기

C#

C# 인터페이스 다중 상속 시 충돌 해결 전략

C#에서는 인터페이스 다중 상속이 가능하지만, 같은 메서드가 여러 인터페이스에 정의되어 있을 때 충돌 문제가 발생할 수 있습니다. 이러한 충돌을 해결하는 전략을 살펴보겠습니다.

1. 기본적인 인터페이스 구현

인터페이스에 같은 이름의 메서드가 있을 경우, 클래스에서 공통 구현을 하면 모든 인터페이스에 동일하게 적용됩니다.

public interface IA
{
    void Show();
}

public interface IB
{
    void Show();
}

public class MyClass : IA, IB
{
    public void Show()
    {
        Console.WriteLine("공통 구현 메서드 호출");
    }
}

2. 명시적 인터페이스 구현

인터페이스 메서드 이름이 충돌할 때, 각각 다르게 구현하고 싶으면 명시적 인터페이스 구현을 이용합니다.

public class MyClass : IA, IB
{
    void IA.Show()
    {
        Console.WriteLine("IA.Show 구현");
    }

    void IB.Show()
    {
        Console.WriteLine("IB.Show 구현");
    }
}

명시적 구현은 클래스 인스턴스에서 바로 호출할 수 없고, 인터페이스 형으로 캐스팅 후 호출해야 합니다.

3. 상황에 맞는 활용

충돌 메서드가 실제로 동일한 기능이라면 기본 구현만으로 충분하고, 다르게 동작해야 한다면 명시적 구현 방식을 이용하는 것이 좋습니다.

이처럼 C#은 인터페이스 다중 상속 충돌을 유연하게 해결할 수 있는 기능을 제공합니다.