程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 【C#進階系列】12 接口,

【C#進階系列】12 接口,

編輯:C#入門知識

【C#進階系列】12 接口,


C#不支持類的多繼承,然而卻可以繼承多個接口。簡單的就不說了,來看看下面的例子:

 public interface IRead {
    string GetText();
 }
 public interface IWrite
 {
    string GetText();
 }    

對於上面的這種情況,如果一個類同時繼承上面兩個接口,那麼如何去實現這兩個名字相同的方法呢?

顯示接口方法(EIMI)

public class MyCpu:IRead,IWrite {
     string IRead.GetText() {
          return "這個方法實現IRead的方法";
     }
     string IWrite.GetText()
     {
          return "這個方法實現IWrite的方法";
     }
     public string GetText()
     {
          return "這個方法實現自己獨有的方法";
     }
}

如上圖,只需要在方法前面加上接口名即可。然而顯示接口方法只能是私有方法。

然而這種方法要慎用,因為使用了這種方法後,值類型的實例在轉換成接口時會發生裝箱。因為是私有的,所以也不能被派生類調用。

最重要的是顯示接口方法的調用很奇葩:

var cpu = new MyCpu();
Console.WriteLine(cpu.GetText());
Console.WriteLine(((IRead)cpu).GetText());
IWrite b = cpu;
Console.WriteLine(b.GetText());
Console.ReadLine();

必須先轉一道再調用,會讓使用的人很困惑。

用基類還是用接口

  • 基類更多的是一個身份上的事,比如鳥是燕子的基類。而接口是一個行為上的事,比如鳥和飛機都能飛,那麼飛就是一個接口。
  • 基類可以為派生類提供良好的默認實現。
  • 基類添加一個方法,派生類自動就可以繼承。而接口添加一個方法,派生類還需要重寫。

然而我認為實際上僅僅用第一個來判斷就好了,因為它更偏向於基於實際業務去考慮到底用基類還是接口。

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