欢迎来到天天文库
浏览记录
ID:34415292
大小:78.19 KB
页数:7页
时间:2019-03-05
《c#学习笔记:接口的执行》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C#学习笔记:接口的执行一、接口的基本概念接口的定义方式与类比较相似。interfaceIMyInterface{//interfacemembers}接口成员的定义与类成员的定义之间的区别:1.不允许使用访问修饰符(public,private,protected或internal),所有的接口成员都是公共的。2.接口成员不能包含代码体。3.接口不能定义域成员(属性)。4.接口成员不能使用关键字static,virtual,abstract或sealed来定义。5.类型定义成员是禁止的。 如果需要隐藏继承了基接口的成员,可以使用new关键字来定义它们,
2、例如:interfaceIMyInterface{voidDoSomething();} interfaceIMyDerivedInterface:IMyInterface{newvoidDoSomething();}其执行方式与隐藏继承的类成员一样。在接口中定义的属性可以确定访问块get和/或set中的哪一个能用于该属性。interfaceIMyInterface{intMyInt{get;set;}}注意:接口没有指定属性应如何存储。接口不能指定域,例如用于存储属性数据的域。接口与类一样,可以定义为类的成员(但与接口的其他成员不同,因为接口不能包含类
3、型定义)。 二、在类中执行接口执行接口的类必须包含该接口所有成员的执行代码,且必须匹配指定的签名(包括匹配指定的get和set块),并且必须是公共的。可以使用关键字virtual或abstract来执行接口成员,但不能使用static或const。例如:publicinterfaceIMyInterface{voidDoSomething();voidDoSomethingElse();} publicclassMyClass:IMyInterface{voidIMyInterface.DoSomething(){} publicvoidDoSometh
4、ingElse(){}}接口成员还可以在基类上执行:publicinterfaceIMyInterface{voidDoSomething();voidDoSomethingElse();} publicclassMyBaseClass{publicvoidDoSomething(){}} publicclassMyDerivedClass:MyBaseClass,IMyInterface{publicvoidDoSomethingElse(){}}即通过另一类中定义相同签名并且符合实现接口的方法。 继承一个执行给定接口的基类,就意味着派生类隐式地支持这
5、个接口,例如:publicinterfaceIMyInterface{voidDoSomething();voidDoSomethingElse();} publicclassMyBaseClass:IMyInterface{publicvirtualvoidDoSomething(){Console.WriteLine("MyBaseClass->IMyInterface->DoSomething()");} publicvirtualvoidDoSomethingElse(){Console.WriteLine("MyBaseClass->IMyIn
6、terface->DoSomethingElse()");}} publicclassMyDerivedClass:MyBaseClass{publicoverridevoidDoSomethingElse(){Console.WriteLine("MyDerivedClass->MyBaseClass->IMyInterface->DoSomethingElse()");}}在基类中把执行代码定义为虚拟,派生类就可以替换该执行代码,而不是隐藏它们。如果要使用new关键字隐藏一个基类成员,而不是重写它,则方法IMyInterface.DoSomethin
7、g()就总是引用基类版本,即使派生类通过这个接口来访问,也是这样。我们用下面这段代码测试上边的接口定义:MyBaseClassa=newMyBaseClass();a.DoSomething();a.DoSomethingElse();IMyInterfaceimi=a;imi.DoSomething();imi.DoSomethingElse();Console.WriteLine(""); MyDerivedClassb=newMyDerivedClass();b.DoSomething();b.DoSomethingElse();imi=b;i
8、mi.DoSomething();imi.DoSomethingElse();执
此文档下载收益归作者所有