国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中接口的使用方法

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

接口可以理解為是一種標準,在這種標準中規(guī)定了實現其的類及結構體中至少應包含的方法和屬性。在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);

     }

}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 中西区| 寿阳县| 科技| 广汉市| 阿坝| 沐川县| 沙河市| 田阳县| 四子王旗| 岑巩县| 延庆县| 包头市| 庄浪县| 香港| 安图县| 睢宁县| 广昌县| 肃宁县| 巴东县| SHOW| 江油市| 璧山县| 建昌县| 芜湖市| 临湘市| 南华县| 平安县| 河北区| 辰溪县| 平远县| 甘泉县| 马边| 扎鲁特旗| 阿图什市| 民勤县| 泉州市| 南安市| 津南区| 都安| 阳城县| 定襄县|