文章目錄
- 接口的定義
- 接口的實現
- 實例1
- 實例2
- 接口的繼承
|
接口是面向對象編程的一個重要技術,在C#中負責實現多重繼承。一個接口定義一個協定,實現接口類或結構體必須遵守其協定。比如耳機接口,比如顯示器接口。
接口的定義
接口用來描述一種程序的規定,可以 屬于任何類或者結構體的一組相關行為。接口可由方法、屬性、事件、索引器或這4種成員類型任何組合構成。接口不能包含常數、字段、運算符、實例構造函數、析構函數或類型,也不能包含任何種類的靜態成員。接口成員一定是公共的。
- 定義接口的語法格式如下:
<訪問修飾符> interface 接口名{//接口主體}
接口不能包含其所定義的成員的任何實現語句,接口只指定實現該接口的類或必須提供的成員。
接口的實現
定義了接口后,就要在類或結構中實現。C#中通常把派生類和基類的關系稱為繼承,類和接口的關系稱為實現。實現接口的語法和繼承類一樣,都有“:”,接口中的方法在類中實現時不是重載,不需要使用override關鍵字。
接口中不能定義構造函數,所以接口不能實例化。實例1
聲明接口IPoint描述一個點的坐標并實現該接口。
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("創建的新點坐標為:");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;}//接口屬性實現public int x{get { return px; }set { px = value; }}public int y{get { return py; }set { py = value; }}} }
運行結果:
對接口的名稱建議以I
開頭,如IPoint
,對接口的訪問修飾符可以選擇使用,但是接口的方法前面不能添加任何訪問修飾符,他是隱式公開的;接口不能包含構造函數,接口不能實現任何方法、屬性和索引器。實例2
定義一個接口,接口包含方法,并使用一個類實現接口。
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, "男");//利用有參構造函數創建對象person1.DisPlay(); //調用DisPlay方法顯示信息person1.DoWork();person1.DoSport();Console.ReadKey();}}interface IPerson //定義Point接口類{void DoWork(); //聲明方法void DoSport();}public class Person:IPerson{private String _id; //身份證號碼字段idpublic string ID //身份證號碼屬性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() //無參構造函數{ }public Person(string name, int age, string gender) //有參構造函數{this._name = name;this._age = age;this._gender = gender;}public void DoWork(){Console.WriteLine("{0}的任務是工作", this._name);}public void DoSport(){Console.WriteLine("{0}喜歡做運動", this._name);}public void DisPlay() //基類共用方法,顯示人的信息{Console.WriteLine("{0}是{1}性,年齡為{2}歲", this._name, this._gender, this._age);}} }
運行結果:
接口的繼承
C#中的派生類只能有一個基類,不支持類的多重繼承,但可以繼承多個接口,通過接口實現多繼承。如在現實中兒子不但可以繼承父母的財產,如伯父我兒女,也可以繼承伯父的財產,在C#中這屬于多重繼承,要用接口來實現,其實接口就是為了實現多重繼承而產生的。在C#中接口可以多繼承,接口之間可以相互繼承,普通類和抽象類可以繼承自接口。一個類可以同時繼承一個類和多個接口,但是接口不能繼承類。
------------------------------------------------------------------------------------------分割線 ------------------------------------------------------------------------------------------
- 博主簡介:
- 工業自動化上位機軟件工程師、機器視覺算法工程師、運動控制算法工程師。目前從業于智能制造自動化行業。 博主郵箱:2296776525@qq.com
- 幫忙點個贊吧。哈哈。