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已经彻底理解了。