即使是abstract class,也不能对实现的接口的某个成员视而不见,即下面这样是不允许的:
interface in_one{
void a();
}
abstract class base_one : in_one{
}
这一点上还是java方便,不管c#的初衷是什么
2,out参数与指针的指针
out子类不能转化为out基类,如果允许转换的化,将无法保证类型安全性;即out参数相当于指针的指针,而父类的指针与子类的指针是没有继承关系的,所以不能转化
3,强制针对接口编程
针对接口编程只是一个一般性的原则,但c#提供了一种机制,强迫客户程序员根据接口来引用你的实现类:重写接口成员时使用全名称,并且去掉public修饰
interface a{
void a();
}
class a_sub:a {
void a.a() {
}
}
static void main(string[] args)
{
((a)new a_sub()).a(); //ok!
new a_sub().a(); //error!
}
(the java programming language notes)
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!


