interface-C#接口-统一的标准
文章目錄
- 接口的定義
- 接口的實(shí)現(xiàn)
- 實(shí)例1
- 實(shí)例2
- 接口的繼承
|
接口是面向?qū)ο缶幊痰囊粋€(gè)重要技術(shù),在C#中負(fù)責(zé)實(shí)現(xiàn)多重繼承。一個(gè)接口定義一個(gè)協(xié)定,實(shí)現(xiàn)接口類或結(jié)構(gòu)體必須遵守其協(xié)定。比如耳機(jī)接口,比如顯示器接口。
接口的定義
接口用來(lái)描述一種程序的規(guī)定,可以 屬于任何類或者結(jié)構(gòu)體的一組相關(guān)行為。接口可由方法、屬性、事件、索引器或這4種成員類型任何組合構(gòu)成。接口不能包含常數(shù)、字段、運(yùn)算符、實(shí)例構(gòu)造函數(shù)、析構(gòu)函數(shù)或類型,也不能包含任何種類的靜態(tài)成員。接口成員一定是公共的。
- 定義接口的語(yǔ)法格式如下:
- <訪問(wèn)修飾符> interface 接口名{//接口主體}
接口不能包含其所定義的成員的任何實(shí)現(xiàn)語(yǔ)句,接口只指定實(shí)現(xiàn)該接口的類或必須提供的成員。
接口的實(shí)現(xiàn)
定義了接口后,就要在類或結(jié)構(gòu)中實(shí)現(xiàn)。C#中通常把派生類和基類的關(guān)系稱為繼承,類和接口的關(guān)系稱為實(shí)現(xiàn)。實(shí)現(xiàn)接口的語(yǔ)法和繼承類一樣,都有“:”,接口中的方法在類中實(shí)現(xiàn)時(shí)不是重載,不需要使用override關(guān)鍵字。
接口中不能定義構(gòu)造函數(shù),所以接口不能實(shí)例化。實(shí)例1
聲明接口IPoint描述一個(gè)點(diǎn)的坐標(biāo)并實(shí)現(xiàn)該接口。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace test {class Program{static void Main(string[] args){Point p = new Point(5, 10);Console.WriteLine("創(chuàng)建的新點(diǎn)坐標(biāo)為:");Console.WriteLine("X={0},Y={1}", p.x, p.y);Console.ReadKey();}}interface IPoint //定義Point接口類{ int x { get; set; }int y { get; set; }}public class Point : IPoint{private int px;private int py;public Point(int x,int y){px = x;py = y;}//接口屬性實(shí)現(xiàn)public int x{get { return px; }set { px = value; }}public int y{get { return py; }set { py = value; }}} }運(yùn)行結(jié)果:
對(duì)接口的名稱建議以I開(kāi)頭,如IPoint,對(duì)接口的訪問(wèn)修飾符可以選擇使用,但是接口的方法前面不能添加任何訪問(wèn)修飾符,他是隱式公開(kāi)的;接口不能包含構(gòu)造函數(shù),接口不能實(shí)現(xiàn)任何方法、屬性和索引器。實(shí)例2
定義一個(gè)接口,接口包含方法,并使用一個(gè)類實(shí)現(xiàn)接口。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace test {class Program{static void Main(string[] args){Person person1 = new Person("小明", 18, "男");//利用有參構(gòu)造函數(shù)創(chuàng)建對(duì)象person1.DisPlay(); //調(diào)用DisPlay方法顯示信息person1.DoWork();person1.DoSport();Console.ReadKey();}}interface IPerson //定義Point接口類{void DoWork(); //聲明方法void DoSport();}public class Person:IPerson{private String _id; //身份證號(hào)碼字段idpublic string ID //身份證號(hào)碼屬性id{get { return this._id; }set { this._id = value; }}private String _name; //姓名字段public string Name //姓名屬性{get { return this._name; }set { this._name = value; }}private int _age; //年齡字段public int Age //年齡屬性{get { return this._age; }set { this._age = value; }}private String _gender; //性別字段public string Gender //性別屬性{get { return this._gender; }set { this._gender = value; }}public Person() //無(wú)參構(gòu)造函數(shù){ }public Person(string name, int age, string gender) //有參構(gòu)造函數(shù){this._name = name;this._age = age;this._gender = gender;}public void DoWork(){Console.WriteLine("{0}的任務(wù)是工作", this._name);}public void DoSport(){Console.WriteLine("{0}喜歡做運(yùn)動(dòng)", this._name);}public void DisPlay() //基類共用方法,顯示人的信息{Console.WriteLine("{0}是{1}性,年齡為{2}歲", this._name, this._gender, this._age);}} }運(yùn)行結(jié)果:
接口的繼承
C#中的派生類只能有一個(gè)基類,不支持類的多重繼承,但可以繼承多個(gè)接口,通過(guò)接口實(shí)現(xiàn)多繼承。如在現(xiàn)實(shí)中兒子不但可以繼承父母的財(cái)產(chǎn),如伯父我兒女,也可以繼承伯父的財(cái)產(chǎn),在C#中這屬于多重繼承,要用接口來(lái)實(shí)現(xiàn),其實(shí)接口就是為了實(shí)現(xiàn)多重繼承而產(chǎn)生的。在C#中接口可以多繼承,接口之間可以相互繼承,普通類和抽象類可以繼承自接口。一個(gè)類可以同時(shí)繼承一個(gè)類和多個(gè)接口,但是接口不能繼承類。
------------------------------------------------------------------------------------------分割線 ------------------------------------------------------------------------------------------- 博主簡(jiǎn)介:
- 工業(yè)自動(dòng)化上位機(jī)軟件工程師、機(jī)器視覺(jué)算法工程師、運(yùn)動(dòng)控制算法工程師。目前從業(yè)于智能制造自動(dòng)化行業(yè)。 博主郵箱:2296776525@qq.com
- 幫忙點(diǎn)個(gè)贊吧。哈哈。
總結(jié)
以上是生活随笔為你收集整理的interface-C#接口-统一的标准的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: js学习总结----编写简单的ajax方
- 下一篇: C# delegate与event,委托