首页 新闻 会员 周边 捐助

关于接口的继承

0
悬赏园豆:20 [已解决问题] 解决于 2007-12-12 23:57
在一个接口中定义了 void Method(),,,然后在一个类中实现:public static void Method(),,,这样是不通过的,,实现接口不能用static吗?
(心)Shing Ye的主页 (心)Shing Ye | 初学一级 | 园豆:125
提问于:2007-12-10 21:13
< >
分享
最佳答案
0
interface temp { void Method(); } public class my:temp { #region temp Members public static void Method() { throw new Exception("The method or operation is not implemented."); } #endregion } Error 1 'ConsoleApplication2.my' does not implement interface member 'ConsoleApplication2.temp.Method()'. 'ConsoleApplication2.my.Method()' is either static, not public, or has the wrong return type. C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication2\Program.cs 12 18 ConsoleApplication2 “ is either static”表示接口里是不允许有静态方法的。 另外:你可以从OO的角度去理解这个问题,interface是抽象的,而static是具体的,这两种东西如果放在一起,interface就失去原来的意义了!所以OO语言应该是都从语法上已经强制这这点:“is either static” ,即不允许任何interface里有任何静态的东西,不信你可以实验一下!
Justin | 小虾三级 |园豆:980 | 2007-12-10 21:22
其他回答(3)
0
接口里不能有静态成员。 如果确实需要的话,可以用范型基类: class Base<T> { static void Method() { ... } }
deerchao | 园豆:8367 (大侠五级) | 2007-12-10 21:40
0
interface代表的是一些抽象,interface的用途是在实例化对象的时候可以利用抽象分离具体实现,因此interface对应的事务具备了该interface所公开的所有方法。 static代表的是一个类所具有的静态方法,它是全局的,假象你有一个接口 interface IStaticExample{} 那么你假象的使用将会是IStaticExample.Method();而这样的使用会不会很别扭呢?举例生活中,接口代表一组功能,比如说 interface ICook { void AddSugar(); void AddSalt(); } 而如果你使用static的话,会不会觉得ICook.AddSugar();缺少主语呢…… [貌似举例都不太好,将就着看吧……] abstract class与interface基本相同,可以参考使用…… 通常也可以设立对应的Helper类进行操作,如: interface ICook{/**/} static class CookHelper{/**/}
volnet(可以叫我大V) | 园豆:720 (小虾三级) | 2007-12-11 00:36
0
上面的大大们回答的都很好啊。就是这样的。 补充一点,如果你真的希望这样暴露接口,可以采用Interface显示实现的方式,如下: interface ITest { void TestMethod(); } class Test : ITest { void ITest.TestMethod() { Test.TestMethod(); } public static void TestMethod() { } }
Colin Han | 园豆:3041 (老鸟四级) | 2007-12-11 13:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册