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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...