2010年2月17日水曜日

同じ名前のMethodをもつInterfaceを複数定義してそのInterfaceを多重継承、多重実装し、その際Methodの衝突をドット演算子を使用して回避し、そのClassをインスタンス化してそのインスタンスをそれぞれのInterface型にCastしてそれぞれInterfaceのMethodを使用してみる。

using System;

interface Interface1
{
    void printOut();
}

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

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

    // Interface1のMethodを指定
    void Interface1.printOut()
    {
        Console.WriteLine("Interface1");
    }

    // Interface2のMethodを指定
    void Interface2.printOut()
    {
        Console.WriteLine("Interface2");
    }
}

class MainClass
{
    static void Main()
    {
        SampleClass sample = new SampleClass();

        // 出力値:SampleClass
        sample.printOut();

        // Interface1にCast
        Interface1 sample1 = (Interface1)sample;

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

        // Interface2にCast
        Interface2 sample2 = (Interface2)sample;
        sample2.printOut();
    }
}

0 コメント:

コメントを投稿