1,接口:1,接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为,可以把它看成是实现一组类的模板。1,接口可有方法、属性、事件和索引器或这4种成员类型的任何组合构成,但不能包含字段。
类和结构可以像类继承基类一样从1,接口继承,但是可以继承多个1,接口。当类和结构继承1,接口时,它继承成员定义但不继承实现。若要实现1,接口成员,类和结构中的成员必须是公共的,非静态的,并且与1,接口成员具有相同的名称和签名。类或结构的属性和索引器可以作为1,接口中定义的属性或索引器定义额外的访问器。例如,1,接口可以声明一个带有get访问其的属性,而实现该1,接口的类可以声明同时带有set和get访问器的同一属性。如果属性或索引器使用显示实现,则访问器必须匹配。
1,接口可以继承其他1,接口,类可以通过其继承的基类或1,接口多次继承某个1,接口,在这种情况下,如果该1,接口声明为新类的一部分,则类只能实现该1,接口一次。如果没有将继承的1,接口声明为新类的一部分,其实现将由声明它的基类提供。基类可以使用虚拟成员实现1,接口成员。在这种情况下,继承1,接口的类可通过重写虚拟成员来更改1,接口行为。
定义1,接口
格式:访问修饰符关键字1,接口的名字(开始字母是大写
{
//只能定义属性,索引器,方法和事件
voidPrint();
stringName{get;set;}
}
1,接口的继承
1,接口之间也可以实现继承,和类与类之间的继承方式完全一样。
派生1,接口:基1,接口
{
}
注:1,接口可以继承1,接口,不可以继承类。一个类有且只有一个基类,但是一个类可以实现多个1,接口,如果一个类实现1,接口和继承类,先写基类后写1,接口,逗号隔开,继承类必须放在1,接口的前面。
类实现1,接口)
如果一个实现了某个1,接口,则必须实现1,接口中定义的所有的内容。
1,接口作为方法的参数
凡是实现1,接口的类的对象都可以作为调用方法的实参进行传递。
1,接口作为方法的返回类型
凡是实现1,接口的类的对象,都可以作为方法返回值。
1,接口的特征:
1,接口类似抽象基类,继承1,接口的任何抽象类型都必须实现1,接口的所有成员。不能直接实例化1,接口。1,接口可以包含事件、索引器、方法和属性。1,接口不能包含方法的实现。类和结构可以从多个1,接口继承。1,接口自身可以从多个1,接口继承。
注:1,接口声明时,通常以大写字母I开头。1,接口声明时,除了interface关键字和1,接口名称外,其他的都是可选项。1,接口使用new、public、protected、internal和private等修饰符声明1,接口,但1,接口成员必须是公共的。继承1,接口时,必须在子类和1,接口之间用冒号如果继承多个1,接口,那么在继承的每个1,接口之间用逗号隔开。
例类实现1,接口
{
voidFly();
stringName{get;set;}
intthis[intidx]{get;set;}
}
{
}
例1,接口继承1,接口
{
voidFly();
}
{
newvoidFly();
stringName{get;set;}
intthis[intidx]{get;set;}
}
例利用1,接口选择不同的语言。
{
{
}
///声明一个1,接口,用于定义Seak方法,而具体Speak方法功能的实现是在类中进行的
{
}
///如果跟中国人对话,则说汉语
{
{
MessageBox.Show('您对中国友人说:'+str,'提示',MessageBoxButtons.OK,MessageBoxIcoInformatio;
}
}
///如果跟美国人对话,则说英语
{
{
MessageBox.Show('您对美国友人说:'+str,'提示',MessageBoxButtons.OK,MessageBoxIcoInformatio;
}
}
{
}
{
byte[]b=GetBytes(str);
for(inti=0;i { i++; if(b[i]!=0) { flag=true; } { } } } { if(txtContent.Text=='') { MessageBox.Show('不想跟友人说点什么吗?','警告',MessageBoxButtons.OK,MessageBoxIcoError); } { if(comboBoxSelectedIndex==0)//与中国人对话 { { } { MessageBox.Show('请和中国友人说汉语?','警告',MessageBoxButtons.OK,MessageBoxIcoError); } } else//与美国人对话 { { MessageBox.Show('请和美国友人说英语?','警告',MessageBoxButtons.OK,MessageBoxIcoError); } { } } } } } 1,接口作为方法的参数:凡是实现1,接口的类的对象都可以作为调用方法的实参进行传递。 1,接口作为方法的返回类型:凡是实现1,接口的类的对象,都可以作为方法的返回值 C#1,接口的显示实现和隐示实现 1,接口的实现很多人都知道,但1,接口的实现方式分显示实现和隐示实现不知道是不是很多人知道呢!但我觉的公司技术部里很少提到这个,就想起来写写这篇blogs。目前常用的方式:publicinterfaceIReview{voidGetReviews();}publicclassShopReview:IReview{publicvoidGetReviews(){}}这种方式是隐示实现:IReviewrv=newShopReview();rv.GetReviews();ShopReviewrv=newShopReview();rv.GetReviews();都可以调用GetReviews这个方法。还有一种方式是显示实现:publicinterfaceIReview{voidGetReviews();}publicclassShopReview:IReview{voidIReview.GetReviews(){}}通过这种方式的1,接口实现。GetReviews就只能通过1,接口来调用:IReviewrv=newShopReview();rv.GetReviews();下面的这种方式将会编译错误:ShopReviewrv=newShopReview();rv.GetReviews();结论:隐示实现1,接口和类都可以访问显示实现只有1,接口可以访问。显示实现益处1:隐藏代码的实现2:在使用1,接口访问的系统中,调用者只能通过1,接口调用而不是底层的类来访问。PS:可以运用到公司目前的1,接口+Sevice架构的系统中。避免我们总是要求大家一定要通过1,接口访问。因为现在不用1,接口访问也不行 C#类和1,接口的区别1,接口是负责功能的定义,项目中通过1,接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与1,接口的区别在于:抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。但1,接口是一个行为的规范,里面的所有东西都是抽象的!一个类只可以继承一个基类也就是父类,但可以实现多个1,接口PS:1,接口除了规范一个行为之外,在具体项目中的实际作用也是十分重要的,在面向对象的设计原则以及设计模式的使用中,无不体现作为一个1,接口的使用好处,最直接的就是设计原则中OCP,我们使用1,接口,而不需要关心他的具体实现,具体实现的细节变化也无关客户端的使用,对与扩展是开放的,我们可以另写一个1,接口的实现来扩展当前程序,而不影响上层的使用,但对修改是封闭的,即我们不能够再去修改1,接口的定义,当然这个“不能够”是指在规范原则上不应该这么做!抽象类和1,接口的区别答:抽象类可以包含功能定义和实现,1,接口只能包含功能定义抽象类是从一系列相关对象中抽象出来的概念,因此反映的是事物的内部共性;1,接口是为了满足外部调用而定义的一个功能约定,因此反映的是事物的外部特性分析对象,提炼内部共性形成抽象类,用以表示对象本质,即“是什么”为外部提供调用或功能需要扩充时优先使用1,接口 文章为作者独立观点,不代表 股票程序化软件自动交易接口观点