2010年1月24日日曜日

複数のInterfaceで同名のMethodを定義しそのInterfaceを多重継承してそのMethodを実装する際、ドット演算子を使用し実装するInterfaceを指定してMethodが衝突するのを回避してみる。

using System;


// Interface
interface Interface1
{
    void printOut();
}


// Methodを衝突させる
interface Interface2
{
    void printOut();
}


// Interfaceの多重実装
class SampleClass : Interface1, Interface2
{
    // 共通のMethodの実装
    public void printOut()
    {
        Console.WriteLine("Interface");
    }


    // Interface1のMethodの実装
    void Interface1.printOut()
    {
        Console.WriteLine("Interface1");
    }


    // Interface2のMethodの実装
    void Interface2.printOut()
    {
        Console.WriteLine("Interface2");
    }
}


class MainClass
{
    static void Main()
    {
        // SampleClassをインスタンス化
        SampleClass sample = new SampleClass();


        /* 共通のMethodを呼び出す
         * 出力値:Interface */
        sample.printOut();


        // SampleClass型をInterface1型にCast
        Interface1 sample1 = (Interface1)sample;


        // 出力値:Interface1
        sample1.printOut();


        // SampleClass型をInterface2型にCast
        Interface2 sample2 = (Interface2)sample;


        // 出力値:Interface2
        sample2.printOut();
    }
}

0 コメント:

コメントを投稿