C#基本語法學習(九)

来源:http://www.cnblogs.com/numbqq/archive/2016/03/18/5293183.html
-Advertisement-
Play Games

C#中的介面 在C#中介面是一組公共方法或屬性的集合。介面可以被其他介面或是類繼承,但不能被實例化。 1、介面中包含的屬性和方法都是公共的,不是繼承或是私有的。事實上,在C#中定義介面中的成員時,不允許顯示指定介面成員的可訪問性,而是自動預設為公共的。 2、介面中只能包含普通方法或屬性,而不能包含其


C#中的介面

  在C#中介面是一組公共方法或屬性的集合。介面可以被其他介面或是類繼承,但不能被實例化。

    1、介面中包含的屬性和方法都是公共的,不是繼承或是私有的。事實上,在C#中定義介面中的成員時,不允許顯示指定介面成員的可訪問性,而是自動預設為公共的。

    2、介面中只能包含普通方法或屬性,而不能包含其他內容,如構造函數、變數等。

    3、當介面被某個類繼承時,通常說類實現了這個介面,而較少說類繼承了介面。

    4、介面中的方法和屬性只有簽名部分,而沒有實現部分,甚至連介面名後面的大括弧也不能有,否則會出現編譯錯誤。

  在C#中用interface關鍵字定義一個介面

  訪問修飾符 interface 介面名

  {

    //介面成員(方法和屬性)

  }

  C#中約定介面的名字以字母I開頭。如以下代碼定義一個介面IPerson

 1     public interface IPerson
 2     {
 3         void eat(object food);      //介面的方法
 4         void speak(string text);    //介面的方法
 5 
 6         string name                 //介面的屬性
 7         {
 8             get;
 9             set;
10         }
11     }

  如前所述,介面中不允許定義變數、構造函數,不能顯示指定介面中方法或屬性的可訪問性。

 

  介面可以被類或者別的介面繼承。類繼承介面的語法與類繼承類的語法相同,都是在類名後面加冒號和要繼承的介面名,如下:

  訪問修飾符 class 類名:介面名

  {

    //類與介面的成員

  }

  類繼承介面與類繼承類的不同之處在於一個類可以同時繼承多個介面,但只能從一個類繼承。當一個類繼承多個介面時,多個介面之間用逗號隔開,如下:

  訪問修飾符 class 類名:[基類名][,介面1][,介面2][...][,介面n]

  {

    //類與介面成員

  }

  介面繼承介面與類繼承介面語法類似,只是定義介面時使用關鍵字interface。

  訪問修飾符 interface 介面名:[介面1][,介面2][,介面3][...][,介面n]

  {

    //介面成員

  }

  如果一個類從介面繼承,那麼這個類必須要實現介面中定義的所有方法和屬性。由於介面定義了方法和屬性的簽名,而這些方法和屬性的具體實現代碼是在從介面繼承的類里寫,所以當一個類從介面繼承時,通常說一個類實現了某個介面。

  這裡所說的實現有兩層含義:首先說明類繼承於介面,其次,類中用代碼實現了介面中定義的方法和屬性。

  如果一個類實現了一個介面,由於類繼承自介面,所以類可以隱式轉換為介面,這與派生類向基類隱式轉換是一樣的。如果一個類實現了多個介面,那麼類可以隱式轉換為其中任意一個介面。

 1     public interface IPerson
 2     {
 3         void eat(object food);      //介面的方法
 4         void speak(string text);    //介面的方法
 5 
 6         string name                 //介面的屬性
 7         {
 8             get;
 9             set;
10         }
11     }
12 
13     public class Student:IPerson
14     {
15 
16         public void eat(object food)
17         {
18             Console.WriteLine(name + " eat: " + food.ToString());
19         }
20 
21         public void speak(string text)
22         {
23             Console.WriteLine(name + " say: " + text);
24         }
25 
26         private string _name;
27         public string name
28         {
29             get
30             {
31                 return _name;
32             }
33             set
34             {
35                 _name = value;
36             }
37         }
38     }
39         static void Main(string[] args)
40         {
41             IPerson person;
42             Console.WriteLine("Main: 通過介面調用方法");
43             person = new Student();
44             person.name = "Nick";
45             person.eat("apple");
46             person.speak("Hello");
47             Console.WriteLine("Main: 通過類調用方法");
48             Student s = new Student();
49             s.name = "Jessice";
50             s.eat("rice");
51             s.speak("Hehe");
52 
53             Console.ReadLine();
54         }

  結果

Main: 通過介面調用方法
Nick eat: apple
Nick say: Hello
Main: 通過類調用方法
Jessice eat: rice
Jessice say: Hehe

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、基本命令 1、立即關機並重啟動,執行如下命令: shutdown -r now 或者reboot 2、立即關機,執行如下命令: shutdown -h now 或者poweroff 3、等待2分鐘關機並重啟動,執行如下命令: shutdown -r 2 4、等待2分鐘關機,執行如下命令: shu
  • 因為總要切換ip,所以百度了一下腳本 如下http://jingyan.baidu.com/article/d2b1d1029d21b95c7e37d4fa.html 動態ip netsh interface ip set address name="本地連接" source=dhcpnetsh i
  • VS2005代碼編輯器的展開和摺疊代碼確實很方便和實用。以下是展開代碼和摺疊代碼所用到的快捷鍵,很常用: Ctrl + M + O: 摺疊所有方法 Ctrl + M + M: 摺疊或者展開當前方法 Ctrl + M + L: 展開所有方法 解決VS2010中工具箱的的不見的問題: 按快捷鍵Ctrl+
  • 先上代碼:
  • 1、MVC的前臺頁面編譯完之後,也會生成一個前臺頁面類。在前天頁面中加入這段代碼this.GetType().Assembly.GetLocation()得到當前類所在的程式集,可以查看其所在的程式,會發現,如果是若類型視圖其繼承的是WebViewPage<object>,而強類型則是機車WebVi
  • 對於一個企業級項目開發,模塊化是非常重要的。 預設Mvc框架的AreaRegistration對模塊化開發已經支持比較好了,還有必要擴展嗎?還能擴展嗎? 本文中的慄子是使用.net4.0、Mvc4.0及Unity2.0(企業庫4.0)的,提供完整源碼。 本分區擴展集成了IoC和分區DI(依賴註入)及
  • NuGet的入門實用教程
  • 協議是指電腦通信網路中兩台電腦之間進行通信所必須共同遵守的規定或規則,超文本傳輸協議(HTTP)是一種通信協議,也就是說一個客戶端和伺服器端請求和應答的標準(基於TCP/IP)。http協議是無狀態的! 目前我們使用的HTTP/1.1版本。 當在瀏覽器地址欄輸入一個url網址(或者IP地址)訪問
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...