c# interface 継承とインタフェース

多重継承はできません。必ず1つのクラスから派生させます。
親クラスを指定しなかった場合には、System.Object が親になります。
java と同様、1つの基底クラスの他に、複数のインタフェースを実装することができます。
インタフェースの定義と実装は下記のように書きます。

interface IPrintableTest
{
  void Print();
  bool Printed { get; set; }
};

class PrintableTest : IPrintableTest
{
  private bool printed = false;

  public void Print()
  {
    Console.WriteLine("PrintableTest OK");
  }

  public bool Printed
  { 
    get
    {
      return printed;
    }
    set
    {
      printed = value;
    }
  }

  public static void Test()
  {
    IPrintableTest printable = new PrintableTest();
    printable.Print();
  }
};

インタフェースやクラスのキャスト用に、as 演算子が用意されています。

IPrintableTest printable = new PrintableTest();

PrintableTest org = printable as PrintableTest;
if (org != null)
  org.Print();

printable は IPrintableTest 型の変数ですが、インスタンスの型は、PrintableTest 型なので、PrintableTest 型の変数に as を使用して代入することができます。

下記のように is 演算子とキャストを利用しても同様の効果が得られます。

IPrintableTest printable = new PrintableTest();

if (printable is PrintableTest)
{
  PrintableTest org = (PrintableTest)printable;
  org.Print();
}

となりのページ

このサイトについて

このサイトのページへのリンクは自由に行っていただいてかまいません。
このサイトで公開している全ての画像、プログラム、文書の無断転載を禁止します。

連絡先

ここをクリック すると表示されるページから作者へメールで連絡できます。

共有