首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

基類與介面混合繼承的宣告問題(二)

     編輯:關於C語言

我們對此結果毫無疑問,這是否代表 B1 和 B2 沒有區別?若上述程式碼作為推理前提在客觀上已足夠充分,答案是肯定的。但我無法知道論據是否已達充分程度。於是修改程式碼,為類別和介面添加成員觀察行為:

interface IC { void M(); }
class A : IC
{
    void IC.M() { Console.WriteLine("In class A"); }
}
class B1 : A { }
class B2 : A, IC { }
class Program
{
    static void Main()
    {
        List<IC> cs = new List<IC>();
        cs.Add(new A()); cs.Add(new B1()); cs.Add(new B2());
        foreach (IC c in cs) c.M();
    }
}

程式正常編譯,結果:

In class A
In class A
In class A

OH, MY GOD! 效果又一樣!難道 B1 跟 B2 真的沒區別?再修改:

interface IC { void M(); }
class A : IC
{
    void IC.M() { Console.WriteLine("In class A"); }
}
class B1 : A
{
    void IC.M() { Console.WriteLine("In class B1"); }
}
class B2 : A, IC
{
    void IC.M() { Console.WriteLine("In class B2"); }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved