c#中 接口成员为什么不能使用关键字static virtul override abstract

来源:互联网 发布:如何分析薪酬数据 编辑:程序博客网 时间:2024/04/27 16:41

接口不实现方法,static是静态调用,调用不实现的方法,有意义吗?
接口里的方法是通过接口映射表来调用实现的(vmt),用virtual没有意义..
接口里不实现方法,自然override重写就没意义了..
接口是全部抽象的,既然全都是抽象,就没必要用abstract标明了.

 

接口里的方法是通过调用拥有此接口的类来调用的(或显示地调用接口的某方法).在此类的声明中,必须有定义此接口的此方法实现.再来看下static:静态字段、静态属性可以在类的实例之间共享(也就是任何类的某对象可以直接使用静态字段,注意是对象在使用静态字段、属性)。而静态方法的使用只需此类名调用即可(不是用此类的对象去调用,即,不能声明此类的一个对象去调用静态方法,它与对象无关),另外,静态方法必须是个有具体代码的方法,不能是空方法.因为任何一个编译器在编译时都必须非常清楚地知道此方法是要如何地被执行.static是让成员在其对象上进行共享的,而abstract一定是要让其继承,让其重载,让其有另一套,故不能用static修饰接口里的成员变量.

   字段、方法、属性用static声明,表示它们是类的静态成员,而不是对象实例的成员。

   这样看来,因为接口本身就是abstract,一定是abstract的.故,它的所有成员都一定是abstract,不需要用abstract去显示地声明成员,若显示地声明了,也没大错,只是没有意义而已(因为大家都知道你一定就是abstract,不需要叫你名字的时候再特意重声下abstract,没意义).因为接口的所有成员一定是abstract,故接口的所有方法不能有任何实现代码(即一定要被调用它的类在定义时重载,故不用virtual修改方法,同上面不需要用abstract修改一样的道理).所以,接口的所有方法在声明时,不需要使用virtul,override关键字来修饰.

原创粉丝点击