DOBON.NET DOBON.NETプログラミング掲示板過去ログ

インターフェイスの実装について質問

環境/言語:[C#]
分類:[.NET]

PageContentクラスは、IAddChildインターフェイスを継承しているのに、AddChildメソッドを直接使用できないのはなぜですか?

---
PageContent pc = new PageContent();
pc.AddChild(fixedPage); // 直接呼び出せない
---
IAddChild pc = new PageContent();
pc.AddChild(fixedPage); // インターフェイスの型なら呼び出せる
---
■No31643に返信(ちくりんさんの記事)
> PageContent pc = new PageContent();
> pc.AddChild(fixedPage); // 直接呼び出せない
呼び出すとすれば、
 ((IAddChild)pc).AddChild(fixedPage);
でしょうか。


> PageContentクラスは、IAddChildインターフェイスを継承しているのに、AddChildメソッドを直接使用できないのはなぜですか?

クラスが用意したメソッドと、インターフェイスが定義するメソッドは
それぞれ独立しています。

// Method1 と Metho2 を持つインターフェイス
interface IHage
{
 void Method1();
 void Method2();
}

// Method1 と Metho3 を持つインターフェイス
interface IHige
{
 void Method1();
 void Method3();
}


// 両方のインターフェイスを実装したクラス
class Class1 : IHage, IHige
{
 // これは Class1 のメソッド
 public void Method1() { }

 // これらは Class1 の外側からは見えないが
// 各インターフェイスにキャストして呼び出すことはできる
 void IHage.Method1() { }
 void IHage.Method2() { }
 void IHige.Method1() { }
 void IHige.Method3() { }
}
2013/06/15(Sat) 18:18:02 編集(投稿者)

なるほど、そういうことだったのですね。
ありがとうございました。
よく理解できました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板