文章目录
- 接口的定义
- 接口的实现
- 实例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
- 帮忙点个赞吧。哈哈。