11智能在线
新记
C# 类没有实现接口中的所有方法 为什么通过了编译
如题所述
举报该文章
相关建议 2012-06-07
æ½è±¡ç±»æ
ç¨ abstract 修饰çç±»æ¯æ½è±¡ç±»ã ããå¨C++ä¸ï¼å«æ纯èæå½æ°ç类称为æ½è±¡ç±»ï¼å®ä¸è½çæ对象ã ããå¡æ¯å å«çº¯èå½æ°çç±»é½æ¯æ½è±¡ç±»ã ããæ½è±¡ç±»æ¯ä¸å®æ´çï¼å¹¶ä¸å®åªè½ç¨ä½åºç±»ãå®ä¸éæ½è±¡ç±»çä¸åï¼ ãã1ãæ½è±¡ç±»ä¸è½ç´æ¥å®ä¾åï¼å¹¶ä¸å¯¹æ½è±¡ç±»ä½¿ç¨ new è¿ç®ç¬¦æ¯ç¼è¯æ¶é误ãè½ç¶ä¸äºåéåå¼å¨ç¼è¯æ¶çç±»åå¯ä»¥æ¯æ½è±¡çï¼ä½æ¯è¿æ ·çåéåå¼å¿ é¡»æè 为 nullï¼æè å«æ对éæ½è±¡ç±»çå®ä¾çå¼ç¨ï¼æ¤éæ½è±¡ç±»æ¯ä»æ½è±¡ç±»æ´¾ççï¼ã ãã2ãå 许ï¼ä½ä¸è¦æ±ï¼æ½è±¡ç±»å å«æ½è±¡æåã ãã3ãæ½è±¡ç±»ä¸è½è¢«å¯å°ã ããå½ä»æ½è±¡ç±»æ´¾çéæ½è±¡ç±»æ¶ï¼è¿äºéæ½è±¡ç±»å¿ é¡»å ·ä½å®ç°æ继æ¿çæææ½è±¡æåï¼ä»èéåé£äºæ½è±¡æåãå¨ä¸è¾¹ç示ä¾ä¸ï¼ ããabstract class A{ public abstract void F();} ããabstract class B: A{ public void G() {}} ããclass C: B{ public override void F() { // actual implementation of F }} ãããæ½è±¡ç±» A å¼å ¥æ½è±¡æ¹æ³ Fãç±» B å¼å ¥å¦ä¸ä¸ªæ¹æ³ Gï¼ä½ç±äºå®ä¸æä¾ F çå®ç°ï¼B ä¹å¿ 须声æ为æ½è±¡ç±»ãç±» C éå Fï¼å¹¶æä¾ä¸ä¸ªå ·ä½å®ç°ãç±äº C ä¸æ²¡æäºæ½è±¡æåï¼å æ¤å¯ä»¥ï¼ä½å¹¶éå¿ é¡»ï¼å° C 声æ为éæ½è±¡ç±»ã ããæ½è±¡ç±»ä¸æ¥å£ç´§å¯ç¸å ³ãç¶æ¥å£åæ¯æ½è±¡ç±»æ´æ½è±¡ï¼è¿ä¸»è¦ä½ç°å¨å®ä»¬çå·®å«ä¸ï¼1ï¼ç±»å¯ä»¥å®ç°æ é个æ¥å£ï¼ä½ä» è½ä»ä¸ä¸ªæ½è±¡ï¼æä»»ä½å ¶ä»ç±»åï¼ç±»ç»§æ¿ï¼ä»æ½è±¡ç±»æ´¾ççç±»ä»å¯å®ç°æ¥å£ï¼ä»èå¾åºæ¥å£æ¯ç¨æ¥è§£å³å¤é继æ¿é®é¢çã2ï¼æ½è±¡ç±»å½ä¸å¯ä»¥åå¨éæ½è±¡çæ¹æ³ï¼å¯æ¥å£ä¸è½ä¸å®éé¢çæ¹æ³åªæ¯ä¸ä¸ªå£°æå¿ é¡»ç¨publicæ¥ä¿®é¥°æ²¡æå ·ä½å®ç°çæ¹æ³ã3ï¼æ½è±¡ç±»ä¸çæååéå¯ä»¥è¢«ä¸åç修饰符æ¥ä¿®é¥°ï¼å¯æ¥å£ä¸çæååéé»è®¤çé½æ¯éæ常éï¼static finalï¼ã4ï¼è¿ä¸ç¹ä¹æ¯æéè¦çä¸ç¹æ¬è´¨çä¸ç¹"æ½è±¡ç±»æ¯å¯¹è±¡çæ½è±¡ï¼ç¶èæ¥å£æ¯ä¸ç§è¡ä¸ºè§è"ã
温馨提示:内容为网友见解,仅供参考
当前网址:
https://11.t2y.org/zz/s8sppv744.html
其他看法
第1个回答 2012-06-08
首先你必须要弄明白什么是接口。
接口可以包容方法、C#属性、事件、以及索引器与非抽象类很类似。
但是:
在接口使用的时候,空接口有2种情况
1:类似于ObjectBuilder中的IBuilderPolicy,他们往往是做一个标记,表示需要某个功能
2:你的接口继承了别的接口(非空),你的接口本身没有声明函数.
如上:接口可以是空的,没有任何的实现。。
本回答被网友采纳
相似回答
大家正在搜
相关问题
C#中像这种类里面为什么继承的接口,但类里面却没有实现接口方...
java里实现一个接口的类必须要实现接口里的所有方法吗?
C#...实现接口的类也要必须实现所有基接口中的对象?
c#中实现接口的类中必须和接口中的方法完全一致吗?
C#接口的应用。为什么不在子类中写自己特有的方法,而需要去通...
C#中接口不包含方法的实现
实现一个接口,则在类中一定要实现接口中的所有方法.对吗
C#关于实现接口,方法重载的问题