C# interface是把所需成员组合起来,以封装一定功能的集合。它好比一个模板,在其中定义了对象必须实现的成员,通过类或结构来实现它。接口不能直接实例化,即ICount ic=new iCount()是错的。接口不能包含成员的任何代码,只定义成员本身。接口成员的具体代码由实现接口的类提供。接口使用interface关键字进行声明。声明格式如下:
创新互联建站是一家集网站建设,京山企业网站建设,京山品牌网站建设,网站定制,京山网站建设报价,网络营销,网络优化,京山网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
- [attributes] [modifiers]
- interface identifier
- [: base-list] {interface-body} {;}
C# interface成员的默认访问方式是public,在声明接口成员时不能出现abstract、public、protected、internal、private、virtual、override或static等关键字。接口成员可以是方法、属性、索引指示器或事件,不能是字段,而且接口的成员名不能相同。
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace Interface
- {
- interface ICount
- {
- void Count();//接口成员的默认访问方式是public
- //int number;//接口中不能定义字段成员
- int para { get;set;}
- }
- class Double : ICount
- {
- public void Count()
- { //实现ICount的Count()方法
- Console.WriteLine("The double para is {0}",2*para);
- }
- int p;
- public int para
- {
- get { return p; }
- set { p = value; }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Double d = new Double();
- d.para = 10;//给"属性"赋值
- d.Count();
- ICount ic = (ICount)d;//转换为接口
- ic.para = 5;
- ic.Count();
- Console.ReadLine();
- }
- }
- }
C# interface的一点使用总结
1 一个类可以实现一个以上的接口;
2 类必须实现接口中的“所有”属性和方法;
3 属性和方法定义所采用的格式必须与接口定义所采用的格式完全相同。方法所采用的参数数目及参数类型必须与接口中的完全相同。方法的名称也必须相同。
接口之间的继承:接口的继承仅仅说明了接口之间的继承关系,派生的接口继承了父接口的成员说明,没有继承父接口的实现。private和internal类型的接口不允许继承。如果派生接口中准备重写父接口的方法,实现方式同类的继承成员的覆盖。
如果一个类实现了某个接口,即使父接口没有在类的基类表中列出,这个类也隐式地继承了接口的所有父接口。
如果两个接口A和B含有同名的成员Method,且都由同一个类C实现,则类C必须分别为A和B的Method成员提供单独的实现,即显式实现接口成员。可行方案:
(1)直接实现一个接口的成员,显式实现另一个接口的成员;
(2)显式实现两个接口的成员
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace Interface
- {
- interface IEnglish
- {
- float Length();
- float Width();
- }
- interface IMetric
- {
- float Length();
- float Width();
- }
- class Class1 : IEnglish, IMetric
- {
- float lengthInches;
- float widthInches;
- public Class1(float length, float width)
- {
- lengthInches = length;
- widthInches = width;
- }
- //显式实现IEnglish的成员
- float IEnglish.Length()
- {
- return lengthInches;
- }
- float IEnglish.Width()
- {
- return widthInches;
- }
- //显式实现IMetric的成员
- float IMetric.Length()
- {
- return lengthInches * 2.54f;
- }
- float IMetric.Width()
- {
- return widthInches * 2.54f;
- }
- static void Main(string[] args)
- {
- Class1 c1 = new Class1(30.0f,20.0f);
- IEnglish e=(IEnglish)c1;
- IMetric m=(IMetric )c1;
- Console.WriteLine("Length(in):{0}",e.Length());
- Console.WriteLine("Width(in):{0}",e.Width());
- Console.WriteLine("Length(cm):{0}",m.Length());
- Console.WriteLine("Width(cm):{0}",m.Width());
- Console.ReadLine();
- }
- }
- }
执行结果:
C# interface学习的一些体会和具体的实例演示就向你介绍到这里,希望对你了解和学习C# interface有所帮助。
【编辑推荐】
文章标题:C# interface学习经验浅谈
文章链接:http://www.shufengxianlan.com/qtweb/news11/169161.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联