您的位置:首页 > 其它

扩展方法、接口和继承带来的有趣现象

2009-08-11 18:38 281 查看
首先我们来看一个最简单的类和对应类的最简单的扩展方法:





这样A就扩展出一个HelloExt 方法来了, 可以这样调用:





然后我们来看看最简单的接口和对应接口的最简单的扩展方法:





让A实现IA接口,





就可以调用接口的HelloExt方法:





说到这里,可能有些人留意到了:A 和 IA 都同时扩展了HelloExt方法,那么前面例子的 a.HelloExt() 在这个时候还会调用了A的扩展方法吗?还是会调用接口IA里面的扩展方法?

可以看到扩展方法提示有重载:





最后运行可以看到A还是调用了自己的扩展方法





保持以上代码不变,只是去掉AExt里面的扩展方法,那么同样运行





A就又跑回接口IA的扩展方法里去





(汗~这是当然的了,只有一个还能跑哪里去)

那么,如果这样呢?





嗯...

两个扩展方法都出来了:





对于继承,让B去继承A,或者既继承A又实现IA:

public class B : A, IA 而最终B调用扩展方法也跟A一样。这里略去,有兴趣的朋友自己试试。 说到这里,令我想起这个现象跟一般接口继承其实是差不多的:





这篇文章可能对部分人来说并没有找到啥子“乐趣”,但我至少学到了很多。

谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐