10.3 接口的实现


1、如何定义和实现接口?


interface I<InterfaceName> 

 

  { 

 

      //interface members. 

 

  }

2、接口成员的定义与类成员的定义相似,但有个重要区别:


1)不允许使用访问修饰符(public,private,protected或internal),所有接口都隐式的是公共的。


2)接口成员不包含方法体。


3)接口不能定义字段成员。


4)不能用关键字static、virtual、abstract、sealed来定义接口成员。


5)类型定义成员是禁止的。



3、如果要隐藏从基接口中继承的成员,可以用关键字new来声明他们。其方式与隐藏继承的类成员一样。


4、在接口中定义属性可以定义访问块的哪一个或两个都用于该属性。


5、接口没有指定应如何存储属性数据。接口不能指定字段,例如用于存储属性数据的字段。最后,接口与类一样,可以定义为类的成员(但不能定义为其他接口的成员,因为接口不能包含类型定义 2(5)有说明)



在类中实现接口


1、可以使用关键字virtual或者abstract来实现接口,但不能用static或const。


2、还可以在基类上实现接口。继承一个实现给定接口的基类,就以为着派生类隐式的支持这个接口。


在基类中把接口的实现代码定义为虚拟,派生类就可以替换该实现代码,而不是隐藏他们。如果要使用new关键字隐藏一个基类成员而不是重写他,则被隐藏的该方法在使用时总是引用基类版本(派生类隐藏了,当然没有了),即便通过这个接口来访问派生类。



在类中实现接口:显式实现接口成员


也可以由类显示的实现接口成员。如果这样做,就只能通过接口来访问该成员,不能通过类来访问。


显式实现接口成员就是要在成员名前加上接口名及“.”。即 <接口名>.<成员名>()



在类中实现接口:其他属性存储器




10.4 部分类定义


代码的分组和部分类定义的区别


代码的分组:


#region 

 

  #endregion


部分类定义:


partial关键字即可。


2、如果使用部分类定义,partial关键字就必须出现在包含部分类定义的每个文件的与此相同的位置。


3、应用与部分类的接口也应用于整个类。


4、部分类定义可以在一个或多个部分类定义文件中包含基类。如果基类在多个定义文件中被指定,他必须是同一个基类。因为在c#中类只能继承一个基类。



10.5 部分类方法定义


部分类也可以定义部分方法。部分方法在一个部分类中定义(没有方法体),在另一个部分类中实现。这两个部分类中,都需要使用partial关键字。


部分方法的重要想主要体现在编译代码时,而不是使用代码时。它可以提高性能。


若代码包含一个没有实现代码的部分方法,编译器就会完全删除该方法及对该方法的所有调用。执行代码时,就不会再检查这个实现代码是否存在。



考虑一下,为什么部分方法不能有返回值?


如果能回答这个问题,说明10.5已经彻底理解了。