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

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

編輯:關於C語言

1. 問題初現

今天,查看《接口繼承的聲明問題》一文的反饋,發現Ninputer留下這樣一道題:

如果有

class A : Interface1

那麼

class B : A, Inteface1

class B : A

會出現什麼不同的情況呢。編譯器在IL級別是用什麼手段實現這個功能的呢?

2. 探索問題 & 理解問題

解決問題的過程既是一個探索的過程也是一個推理論證的過程。OK,下面我嘗試用反證法來探索這個問題。

首先,我假設問題中B類的兩種繼承方式有著一樣的效果,並試著尋找它們的不一樣。為了了解這兩種方式的效果,我把上面代碼補充完整:

interface IC { }
class A : IC { }
class B1 : A { }
class B2 : A, IC { }
class Program
{
  static void Main()
  {
    A a = new A();
    B1 b1 = new B1();
    B2 b2 = new B2();
    Console.WriteLine(a is IC);
    Console.WriteLine(b1 is A);
    Console.WriteLine(b1 is IC);
    Console.WriteLine(b2 is A);
    Console.WriteLine(b2 is IC);
  }
}

代碼運行的結果是:

True
True
True
True
True

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved