fc2ブログ

たこぜりー研究室

大腸菌DNAは4.64Mbp。酵母は13Mbpで、ヒトは3Gbp

ポリモーフィズム #3

#475
前回の続き。
おまけ。メンバの明示的な実装をつけた場合。
using System;

namespace ConsoleApp
{
  interface IA
  {
    string Who();
  }

  class B : IA
  {
    public string Who() { return "B"; }
  }

  class C : B, IA
  {
    public new string Who() { return "C"; }

    string IA.Who() { return "C (explicit)"; }
  }

  class Program
  {
    static void Main()
    {
      C c = new C();

      CallC(c); CallB(c); CallA(c);
    }

    static void CallC(C c)
    {
      Console.WriteLine("そのまま : " + c.Who());
    }

    static void CallB(B b)
    {
      Console.WriteLine("B に変換 : " + b.Who());
    }

    static void CallA(IA a)
    {
      Console.WriteLine("IA に変換 : " + a.Who());
    }
  }
}

結果 :
そのまま : C
B に変換 : B
IA に変換 : C (explicit)

やはり完全に継承できるようにするには、仮想メンバにするしかないのか。

コメント


コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURL:  http://takojelly.blog2.fc2.com/tb.php/475-33652aa1