a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

C#中接口的使用方法

2023-05-03 13:32:47
字體:
來源:轉載
供稿:網友

接口可以理解為是一種標準,在這種標準中規定了實現其的類及結構體中至少應包含的方法和屬性。在C#語言中不允許類的多繼承,這是因為傳統的多繼承帶來的問題往往勝過其帶來的好處。然而,現實世界里到處都存在著多繼承的情況。為了解決這個矛盾,在一些面向對象語言中提出了接口的概念。在C#中,通過接口可以實現多繼承的功能。

1.接口的聲明

                   訪問修飾符 interface 接口名稱{:基接口}
                          {
                                  接口體;
                          }

如下面定義了一個控件的接口IControl:

     interface IControl
            {
                   void Paint();
            }

與類不同,接口如果沒有指定訪問修飾符,其默認為public。接口的成員只能為方法,屬性,索引器和事件。

接口中的任何成員僅有聲明,沒有實現,而且也不能實現,因為接口僅是一種契約,這種契約需要類或結構來實現。

接口中的任何成員都是定義為公有的,指定其它的訪問修飾符,編譯時將會出錯。

2.接口的繼承

接口可以象類那樣進行繼承,但與類不同的是,接口具有多重繼承性,而類沒有。下面是兩個單繼承的例子:

         interface  ITextBox:IControl
                {
                      void SetText(string txt);
                }

         interface IListBox:IControl
                 {
                      void SetItems(string[] items)
                 }

而下面是接口多重繼承的例子:

         interface IComboBox:TextBox,ListBox
                 {                       
                 }

從上面的例子中可以看出,如果接口具有多個基接口,每個基接口之間用逗號隔開。

3.接口的實現

因為接口中的成員僅有聲明而沒有實現,這樣的話,接口本身是什么都干不了的,必須由其它內容來實現其中的聲明才會起作用。

類和結構都可以實現接口。這里僅探討類實現接口的情況。一個類可以實現一個接口,也可以實現多個接口,類要想實現接口,必須實現接口中聲明的全部成員,否則無法通過編譯。下面給出接口使用的例子:

using System;

 

interface Vehicle  //交通工具接口

{

     string Color  //顏色

     {

         get;

         set;

     }

     void SpeedUp(float v); //加速運行   

     void Stop();           //停止

}

interface Toy //玩具接口

{

     void Cry();        //

     void Laugh();      //

}

interface Car:Vehicle  //小汽車接口,繼承于Vehicle接口

{

     int Container //汽車的容量

     {

         get;

         set;

     }

}

interface Ship:Vehicle      //輪船接口,繼承于Vehicle接口

{

     string Type        //型號

     {

         get;

     }

}

 

class Titanic:Ship //定義泰坦尼克類Titanic實現Ship接口

{

     string s_color;    //顏色

     string s_type;     //型號

     public Titanic(string s)    //構造器

     {

         this.s_type = s;

     }

     public string Type

     {

         get{return s_type;}

     }

     public string Color         //實現顏色Color屬性

     {

         get{return s_color;}

         set{s_color = value;}

     }

     public void SpeedUp(float v)     //實現加速運行方法

     {

         Console.WriteLine("泰坦尼克以{0}m/s的速度全速前進",v);

     }

     public void Stop()     //實現停止方法

     {

         Console.WriteLine("泰坦尼克停下來休息!");

     }

    

}

class ToyCar:Toy,Car   //定義玩具汽車類ToyCar實現ToyCar接口

{

     string s_color;    //顏色

     int i_container; //容量

     public string Color         //實現顏色Color屬性

     {

         get{return s_color;}

         set{s_color = value;}

     }

     public int Container   //實現容量屬性

     {

         get{return i_container;}

         set{i_container = value;}

     }

     public void SpeedUp(float v)     //實現加速運行方法

     {

         Console.WriteLine("玩具汽車以{0}m/s的速度全速前進",v);

     }

     public void Stop()     //實現停止方法

     {

         Console.WriteLine("玩具汽車停靠在旁邊!");

     }

     public void Cry()      //實現哭Cry()方法

     {

         Console.WriteLine("玩具汽車哭了...(!_!)");

     }

     public void Laugh()    //實現笑Laugh()方法

     {

         Console.WriteLine("玩具汽車笑了...(^_^)");

     }

     //類的其它方法

     public void PrintInfo()

     {

         Console.Write("玩具汽車的顏色為:{0},",s_color);

         Console.WriteLine("容量為{0}",i_container);

     }

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产极品美女高潮抽搐免费网站 | 成人中文网 | 国产最新网站 | 欧美一级片在线 | 免费黄色在线 | 精品国产一区二区三区久久久蜜月 | 欧美视频免费看 | 亚洲欧美日韩电影 | 亚洲品质自拍视频网站 | 欧美大片在线观看 | 久久不色 | 最近免费中文字幕大全免费版视频 | 成人日批| 18成人在线观看 | 国产区在线观看 | 国产老女人精品毛片久久 | 精品视频在线免费 | 国产一区二区三区免费 | 九七超碰在线 | 国产精品久久久久久久久久久久久久 | 色婷婷综合久久久久中文一区二 | 国产精品久久久久久久久久久久冷 | 日日天天 | 国产 日韩 欧美 中文 在线播放 | 国产精品国产成人国产三级 | 国产精品一区二区精品 | 久久午夜视频 | 成人国产精品视频 | 韩国精品一区二区三区 | 日本一二区视频 | 国产欧美一区二区视频 | 欧美一区二区三区免费观看 | 香蕉视频91 | 在线视频一二区 | 国产成人亚洲欧 | 欧美国产日韩精品 | 亚洲精品成人 | av网站免费观看 | 这里只有精品在线 | 五月天婷婷激情视频 | 成人国产精品免费观看 |