たこぜりー研究室

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

スポンサーサイト

#
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ポリモーフィズム #1

#473
[.NET 3.5 with C#]
ちょっと実験。C# 言語仕様の 13.4.5 Interface implementation inheritance を参照。
using System;

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

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

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

  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 に変換 : B

1. インターフェイスを実装したクラスを継承し、メンバを派生クラスで隠ぺいした場合に、
2. 派生クラスのインスタンスをインターフェイス型にキャストしそのメンバを呼び出すと、
3. 隠ぺいされた基本クラスのメンバが呼ばれる。

つづく

コメント


コメントの投稿


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

トラックバック

トラックバックURL:  http://takojelly.blog2.fc2.com/tb.php/473-c4b187b8
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。