반응형

인터페이스 다중 상속 시 메소드명이 동일한 경우에는 해당 메소드는 명시적 구현 즉 '인터페이스명.메소드명' 형식으로 해야 합니다.

명시적 구현인 경우 private만 가능하기 때문에 클래스의 인스턴스로는 메소드 호출을 할 수 없고 인터페이스 타입으로 호출해야 합니다.

using System;
using System.Collections.Generic;
using System.Linq;

interface SamsungPhone {
    void TurnOn();
    void TurnOff();
    void Fold();
}

interface LGPhone {
    void TurnOn();
    void TurnOff();
    void Roll();
}

class IntegratedPhone: SamsungPhone, LGPhone {
    void SamsungPhone.TurnOn() { Console.WriteLine("Samsung Trun On"); }
    void SamsungPhone.TurnOff() { Console.WriteLine("Samsung Trun Off"); }
    void LGPhone.TurnOn() { Console.WriteLine("LG Trun On"); }
    void LGPhone.TurnOff() { Console.WriteLine("LG Trun Off"); }
    
    public void Fold() { Console.WriteLine("Folding"); }
    public void Roll() { Console.WriteLine("Rolling"); }
}

class MainClass {
    static void Main() {
        SamsungPhone samsung = new IntegratedPhone();
        samsung.TurnOn();
        samsung.Fold();
        
        LGPhone lg = new IntegratedPhone();
        lg.TurnOn();
        lg.Roll();
    }
}

실행결과

+ Recent posts