一文读懂c#中的(接口)接口?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
在c#语言中,类之间的继承关系仅支持单重继承,而接口是为了实现多重继承关系设计的。一个类能同时实现多个接口,还能在实现接口的同时再继承其他类,并且接口之间也可以继承。无论是表示类之间的继承还是类实现接口,接口之间的继承,都使用“:”来表示。
接口定义了属性,方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。接口定义了语法合同“是什么,部分,派生类定义了语法合同“怎么做“部分。
<强>定义接口语法:
强>
interface 接口名称
引用>
{
,,,接口成员;
}接口命名通常以我字母开头,例如它。
接口成员,不允许使用公共,私人的,保护,内部访问修饰符,不允许使用静态的,虚拟的,抽象的,密封的修饰符。不能定义字段,定义的方法不能包含方法体。
示例:定义一本书的接口,有id,名称名字,定价价格几个属性,和一个方法售卖价SalePrice ()。
使用系统; 名称空间的应用程序 { 接口IBook { int Id{得到;设置;} 字符串名称{得到;设置;} 两倍价格{得到;设置;} 双SalePrice (int折扣); } }
接口的实现与类的继承语法格式类似,也是重写了接口中的方法,让其有了具体的实现内容。
<强>实现接口语法:强>
class 类名:接口名
引用>
{
,,,//类中的成员以及实现接口中的成员
}在实现接口的成员时有两种方式,隐式实现接口成员和显式实现接口成员。隐式实现接口成员是将接口的所有成员以公共访问修饰符修饰。显式实现接口是指在实现接口时所实现的成员名称前含有接口名称作为前缀。
下面对一本书的接口分别使用隐式实现和显式实现。
<>强隐式实现:强>
类的书:IBook {//隐式的实现接口中的属性 公共int Id{得到;设置;} 公共字符串名称{;设置;} 双价格{得到;设置;}//隐式实现接口中的方法 公共双SalePrice (int折扣) { 双salePrice=*折扣价格* 0.1; 返回salePrice; } }隐式实现后进行运行:
类项目 { 静态void Main (string [] args) { 书书=new (); 书。Id=1001; 书。Name=皌ynam"; 书。价格=60; Console.WriteLine (“id: {0},,book.Id); Console.WriteLine(“书名:{0},,book.Name); Console.WriteLine(“定价:{0}“,book.Price); Console.WriteLine(“售卖价:{0}“,book.SalePrice (8)); } }运行后结果:
id: 1001
引用>
书名:tynam
定价:60
售卖价:48<强>显式实现:强>
类的书:IBook { 双价格{得到;设置;}//显示的实现接口中的属性 int IBook。Id{得到;设置;} 字符串IBook。名字{得到;设置;}//显式实现接口中的方法 IBook的两倍。SalePrice (int折扣) { 双salePrice=*折扣价格* 0.1; 返回salePrice; } }<强>显式实现后进行运行:强>
类项目 { 静态void Main (string [] args) { 书书=new (); IBook bookDetail=书; bookDetail。Id=1001; bookDetail。Name=皌ynam"; bookDetail。价格=60; Console.WriteLine (“id: {0},,bookDetail.Id); Console.WriteLine(“书名:{0},,bookDetail.Name); Console.WriteLine(“定价:{0}“,bookDetail.Price); Console.WriteLine(“售卖价:{0}“,bookDetail.SalePrice (8)); } }<>强运行后结果:强>
id: 1001
引用>
书名:tynam
定价:60
售卖价:48接口无法直接进行实例化。其成员由实现接口的任何类或结构来实现。
使用接口实现多态需要满足以下两个条件。
定义接口并使用类实现了接口中的成员。
创建接口的实例指向不同的实现类对象。
示例:定义一个接口名称为IBird,分别定义两个实现类凤凰和鸭来实现接口的成员,代码如下。
IBird接口 { 空飞(); } 类凤凰:IBird { 公共空间飞() { Console.WriteLine(“凤凰会飞“); } } 鸭类:IBird { 公共空间飞() { Console.WriteLine(“鸭子也会飞“); } }一文读懂c#中的(接口)接口