程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 基類與接口混合繼承的聲明問題(2)

基類與接口混合繼承的聲明問題(2)

編輯:關於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