最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中接口(Interface)的深入詳解

 更新時間:2020年08月30日 08:26:51   作者:Tynam.Yang  
這篇文章主要給大家介紹了關(guān)于C#中接口(Interface)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

定義

在 C# 語言中,類之間的繼承關(guān)系僅支持單重繼承,而接口是為了實現(xiàn)多重繼承關(guān)系設(shè)計的。一個類能同時實現(xiàn)多個接口,還能在實現(xiàn)接口的同時再繼承其他類,并且接口之間也可以繼承。無論是表示類之間的繼承還是類實現(xiàn)接口、接口之間的繼承,都使用“:”來表示。

接口定義了屬性、方法和事件,這些都是接口的成員。接口只包含了成員的聲明。成員的定義是派生類的責(zé)任。接口提供了派生類應(yīng)遵循的標(biāo)準(zhǔn)結(jié)構(gòu)。接口定義了語法合同 "是什么" 部分,派生類定義了語法合同 "怎么做" 部分。

定義接口語法:

interface  接口名稱
{
    接口成員;
}

接口命名通常以 I 字母開頭,例如Itest。

接口成員,不允許使用 public、private、protected、internal 訪問修飾符,不允許使用 static、virtual、abstract、sealed 修飾符。不能定義字段,定義的方法不能包含方法體。

示例:定義一本書的接口,有id、名稱name、定價price幾個屬性,和一個方法售賣價SalePrice()。

using System;
 
namespace app
{
 interface IBook
 {
 int Id { get; set; }
 string Name { get; set; }
 double Price { get; set; }
 double SalePrice(int discount);
 }
}  

實現(xiàn)

接口的實現(xiàn)與類的繼承語法格式類似,也是重寫了接口中的方法,讓其有了具體的實現(xiàn)內(nèi)容。

實現(xiàn)接口語法:

class  類名 : 接口名
{
    //類中的成員以及實現(xiàn)接口中的成員
}

在實現(xiàn)接口的成員時有兩種方式,隱式實現(xiàn)接口成員和顯式實現(xiàn)接口成員。隱式實現(xiàn)接口成員是將接口的所有成員以 public 訪問修飾符修飾。顯式實現(xiàn)接口是指在實現(xiàn)接口時所實現(xiàn)的成員名稱前含有接口名稱作為前綴。

下面對一本書的接口分別使用隱式實現(xiàn)和顯式實現(xiàn)。

隱式實現(xiàn):

class Book:IBook
 {
 // 隱式的實現(xiàn)接口中的屬性
 public int Id { get; set; }
 public string Name { get; set; }
 public double Price { get; set; }
 
 // 隱式實現(xiàn)接口中的方法
 public double SalePrice(int discount)
 {
  double salePrice = Price * discount * 0.1;
   return salePrice;
 }
 
 }

隱式實現(xiàn)后進(jìn)行運(yùn)行:

class Program
{
 static void Main(string[] args)
 {
 Book book = new Book();
 book.Id = 1001;
 book.Name = "tynam";
 book.Price = 60;
 
 Console.WriteLine("id:{0}" , book.Id);
 Console.WriteLine("書名:{0}" , book.Name);
 Console.WriteLine("定價:{0}", book.Price);
 Console.WriteLine("售賣價:{0}", book.SalePrice(8));
 }
}

運(yùn)行后結(jié)果:

id:1001
書名:tynam
定價:60
售賣價:48

顯式實現(xiàn):

class Book:IBook
{
 public double Price { get; set; }
 // 顯示的實現(xiàn)接口中的屬性
 int IBook.Id { get; set; }
 string IBook.Name { get; set; }
 
 // 顯式實現(xiàn)接口中的方法
 double IBook.SalePrice(int discount)
 {
 double salePrice = Price * discount * 0.1;
   return salePrice;
 }
 
}
 

顯式實現(xiàn)后進(jìn)行運(yùn)行:

class Program
{
 static void Main(string[] args)
 {
 Book book = new Book();
 IBook bookDetail = book;
 bookDetail.Id = 1001;
 bookDetail.Name = "tynam";
 bookDetail.Price = 60;
 
 Console.WriteLine("id:{0}" , bookDetail.Id);
 Console.WriteLine("書名:{0}" , bookDetail.Name);
 Console.WriteLine("定價:{0}", bookDetail.Price);
 Console.WriteLine("售賣價:{0}", bookDetail.SalePrice(8));
 }
}

運(yùn)行后結(jié)果:

id:1001
書名:tynam
定價:60
售賣價:48

注意:接口無法直接進(jìn)行實例化。 其成員由實現(xiàn)接口的任何類或結(jié)構(gòu)來實現(xiàn)。

多態(tài)

使用接口實現(xiàn)多態(tài) 需要滿足以下兩個條件。

定義接口并使用類實現(xiàn)了接口中的成員。

創(chuàng)建接口的實例指向不同的實現(xiàn)類對象。

示例:定義一個接口名稱為 IBird,分別定義兩個實現(xiàn)類 Phoenix 和 Duck 來實現(xiàn)接口的成員,代碼如下。

interface IBird
 {
 void fly();
 }
 
 class Phoenix : IBird
 {
 public void fly()
 {
  Console.WriteLine("鳳凰會飛");
 }
 }
 
 class Duck : IBird
 {
 public void fly()
 {
  Console.WriteLine("鴨子也會飛");
 } 
 }

實例化后執(zhí)行:

class Program
{
 static void Main(string[] args)
 {
  IBird phoenix = new Phoenix();
  phoenix.fly();
  IBird duck = new Duck();
  duck.fly();
 }
}

執(zhí)行結(jié)果:

鳳凰會飛
鴨子也會飛

總結(jié)

到此這篇關(guān)于C#中接口(Interface)深入詳解的文章就介紹到這了,更多相關(guān)C# 接口(Interface)詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • winform實現(xiàn)五子棋游戲

    winform實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了winform實現(xiàn)五子棋游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C#連接藍(lán)牙設(shè)備的實現(xiàn)示例

    C#連接藍(lán)牙設(shè)備的實現(xiàn)示例

    本文主要介紹了C#連接藍(lán)牙設(shè)備的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Unity時間戳的使用方法

    Unity時間戳的使用方法

    這篇文章主要為大家詳細(xì)介紹了Unity時間戳的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • c#類的使用示例

    c#類的使用示例

    這篇文章主要介紹了c#類的使用示例,還有我學(xué)習(xí)時的筆記,需要的朋友可以參考下
    2014-04-04
  • 淺談C#設(shè)計模式之開放封閉原則

    淺談C#設(shè)計模式之開放封閉原則

    這篇文章主要介紹了淺談C#設(shè)計模式之開放封閉原則,需要的朋友可以參考下
    2014-12-12
  • C#MQTT協(xié)議服務(wù)器與客戶端通訊實現(xiàn)(客戶端包含斷開重連模塊)

    C#MQTT協(xié)議服務(wù)器與客戶端通訊實現(xiàn)(客戶端包含斷開重連模塊)

    本文主要介紹了C#MQTT協(xié)議服務(wù)器與客戶端通訊實現(xiàn),包括客戶端包含斷開重連模塊,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-07-07
  • C#遍歷DataSet控件實例總結(jié)

    C#遍歷DataSet控件實例總結(jié)

    這篇文章主要介紹了C#遍歷DataSet控件的用法,以實例形式總結(jié)歸納了常見的遍歷方法,具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2014-10-10
  • 詳解C#編程中.NET的弱事件模式

    詳解C#編程中.NET的弱事件模式

    這篇文章主要介紹了C#編程中.NET的弱事件模式,深入討論了C#中相關(guān)的垃圾回收機(jī)制,需要的朋友可以參考下
    2015-07-07
  • C#用timer實現(xiàn)背單詞小程序

    C#用timer實現(xiàn)背單詞小程序

    這篇文章主要為大家詳細(xì)介紹了C#用timer實現(xiàn)背單詞小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • c# 文件(夾)創(chuàng)建與刪除

    c# 文件(夾)創(chuàng)建與刪除

    刪除文件夾,參數(shù)文件夾路徑
    2009-07-07

最新評論

聊城市| 石林| 瑞丽市| 山西省| 安泽县| 大连市| 马关县| 乌兰浩特市| 仙桃市| 阿勒泰市| 桂平市| 凤翔县| 都江堰市| 汾西县| 上饶县| 孝感市| 文山县| 财经| 夏津县| 石首市| 包头市| 东山县| 高台县| 张家口市| 临邑县| 襄城县| 西平县| 镇巴县| 延庆县| 温宿县| 大同市| 罗平县| 洛阳市| 博白县| 仪征市| 平阴县| 军事| 筠连县| 昆山市| 施甸县| 福建省|