더북(TheBook)

45.5 명시적인 인터페이스 구현하기

인터페이스를 사용한 다중 상속이 가능하기에 각 인터페이스에 동일한 멤버가 구현되어 있을 때가 있습니다. 이때는 명시적으로 어떤 인터페이스의 멤버를 실행할지 지정해야 합니다. 다음 내용을 입력한 후 실행해 보세요.

명시적인 인터페이스 구현: InterfaceExplicit.cs

using System;

interface IDog
{
    void Eat();
}

interface ICat
{
    void Eat();
}

class Pet : IDog, ICat
{
    void IDog.Eat() => Console.WriteLine("Dog Eat"); //① 명시적으로 IDog 지정

    void ICat.Eat() => Console.WriteLine("Cat Eat");  //② 명시적으로 ICat 지정
}

class InterfaceExplicit
{
    static void Main()
    {
        Pet pet = new Pet();
        ((IDog)pet).Eat(); //ⓐ pet 개체를 IDog 형식으로 변환
        ((ICat)pet).Eat(); //ⓑ pet 개체를 ICat 형식으로 변환

        IDog dog = new Pet();
        dog.Eat();
        ICat cat = new Pet();
        cat.Eat();
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.