- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
接口与抽象类
接口(interface)是向客户保证类的行为方式的一种协定(contract)。当类实现某个接口时,相当于告诉客户:“我保证支持这个接口中提出的所有方法、属性、事件、索引器”。
C#如何定义接口?
访问修饰符 interface 接口名
{
//没有实现的各种方法签名
}
说明:一般的接口名称,首字母都要以 I 开头,如:IFly等。
C#如何实现接口?
举例:public class Duck : IFly
{
public void Fly(){//flying};
}
跟继承一样,在C#中,采用: (冒号)来实现某个接口。
实现多个接口
public class Duck:IFly,IHowl
{
public void Fly(){};
public void Howl(){};
}
在C#中,采用: (冒号)来实现某个接口,如果要实现多个接口,可以用逗号隔开。
扩展接口
public interface IDuckBehavior:IFly
{
void Swim(){};
}
public class Duck:IDuckBehavior
{
…….
}
抽象类与接口的比较
思考一下:我们知道鸭子有很多种,红头鸭、绿头鸭、荷兰鸭等等。这些鸭子都具备飞行的能力,如何设计鸭子类并让所有的鸭子都具备飞行能力呢?
第一种方式:我们考虑使用继承。将Duck类设计成所有鸭子的超类,我们不希望能够直接实例化Duck,因为这种鸭子太不具体了,所以我们把Duck定义为抽象基类:
分析第一种方式,采用抽象基类就避免了直接实例化Duck而产生一只不明不白的鸭子,同时将Duck类中的Fly方法声明为abstract,又表示所有继承Duck的子类都必须要实现飞行的方法(Fly)。如果再增加其他种类的鸭子,都只要继承Duck类并重写Fly方法即可。假如,这时候,我们还需要定义一个另外一个对象:飞机(plane)。飞机很显然具备飞行的能力,但是它又不属于鸭子类,该怎么做呢?
这时候就该考虑使用接口了:
通过前面的分析比较,我们发现抽象类和接口有些相似,但又不太一样。
相同点:
两者都不允许被实例化。
两者都包含没有实现的方法声明,抽象类是抽象方法;而接口则是所有的成员(方法、属性、事件、索引器)。
派生类必须实现未实现的方法。
不相同的地方:
抽象类是对类的抽象。而接口只是一个行为的规范或规定。
接口不具备任何继承的特点。它仅仅是承诺该完成的方法。
类可以实现多个接口,但只能继承一个父类。
抽象类可以包含方法的实现(非抽象方法),而接口中所有的方法都没有实现。
需要注意的是:
1.不允许提供接口中任何成员的执行,即接口中如果有成员函数,那么该函数只有函数头,而没有函数体;接口的属性也不包含读写访问器的实现代码,而只有声明的代码
2.不能实例化接口,它只能包含成员的签名;
3.接口中不能含有构造函数;(思考,为什么?)
4.接口中不能含有字段成员
5.接口中不允许声明成员上的修饰符,接口的成员总是public的(默认)
6.接口的派生类也称作接口的执行类,接口中的成员都需要在其执行类中实现。
接口不能包含常量、字段、构造函数、析构函数和静态成员。接口中的所有成员暗含是public。
is 与 as
Duck duck = Decide.DecideDuckType();
if (duck is RedHeadDuck)
{
IFly redHeadDuck = (IFly)duck;
redHeadDuck.Fly();
}
Duck duck = Decide.DecideDuckType();
IFly redHeadDuck = duck as RedHeadDuck;
if (null != redHeadDuck)
{
redHeadDuck.Fly();
}
您可能关注的文档
最近下载
- 餐饮值班管理课程培训.pptx
- 尔雅《批判与创意思考》课后习题+期末试题.docx VIP
- 6-4正奇租赁二期资产支持专项计划现金流预测分析报告1213日.pdf
- 算法设计与分析(北航)中国大学MOOC慕课 章节测验期末考试客观题答案.docx
- 2024年山东省济宁市中考化学试卷(附答案).docx VIP
- T IAC CAMRA 50-2024 《事故汽车常用零部件修复与更换判别规范》(2).pdf
- 北师大版数学八年级下册第六章 平行四边形 大单元整体教学设计学历案教案附作业设计(基于新课标教学评一致性).docx
- 长江经济带港口发展研究(2011~).docx VIP
- 染色技术 8.1 涤纶结构特点和分散染料分类 8.1 涤纶结构特点、分散染料分类.pptx
- 人教版三年级下册必读书目《中国古代寓言故事》 .pdf
文档评论(0)