亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

一文讀懂C#中的(Interface)接口

發布時間:2020-11-06 16:02:18 來源:億速云 閱讀:166 作者:Leah 欄目:開發技術

一文讀懂C#中的(Interface)接口?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

定義

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

接口定義了屬性、方法和事件,這些都是接口的成員。接口只包含了成員的聲明。成員的定義是派生類的責任。接口提供了派生類應遵循的標準結構。接口定義了語法合同 "是什么" 部分,派生類定義了語法合同 "怎么做" 部分。

定義接口語法:

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);
 }
}  

實現

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

實現接口語法:

class  類名 : 接口名
{
    //類中的成員以及實現接口中的成員
}

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

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

隱式實現:

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

隱式實現后進行運行:

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));
 }
}

運行后結果:

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

顯式實現:

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

顯式實現后進行運行:

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));
 }
}

運行后結果:

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

注意:接口無法直接進行實例化。 其成員由實現接口的任何類或結構來實現。

多態

使用接口實現多態 需要滿足以下兩個條件。

定義接口并使用類實現了接口中的成員。

創建接口的實例指向不同的實現類對象。

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

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

實例化后執行:

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

執行結果:

鳳凰會飛
鴨子也會飛

看完上述內容,你們掌握一文讀懂C#中的(Interface)接口的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

农安县| 汕尾市| 新野县| 昌黎县| 丹巴县| 安达市| 仁寿县| 商丘市| 凉山| 赣榆县| 天祝| 丹棱县| 浦东新区| 任丘市| 宜城市| 陇西县| 醴陵市| 泰来县| 昔阳县| 哈尔滨市| 涟源市| 资阳市| 内黄县| 宁乡县| 海宁市| 龙井市| 闽侯县| 探索| 汉中市| 龙门县| 霸州市| 古蔺县| 鄂托克前旗| 法库县| 肥城市| 皋兰县| 灌南县| 双牌县| 张家口市| 玉林市| 拉孜县|