A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗志强 中级黑马   /  2013-1-21 13:22  /  1429 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ShowStyle 于 2013-1-22 11:32 编辑

1,这个类是抽象类,但是其没有抽象成员,其继承了Ilist,Icollection,IEnumerable三个接口,而Ilist接口中有好些个方法,

我们都知道,接口的方法不包括实现,方法实现都是在继承该接口的类中,但是此时collectionBase抽象类中却没有实现方法,难道这是微软开的后门??

这时候可能有人怀疑,因为CollectionBase是抽象类,其本身也是不能包含方法实现的,但是问题又来了,虽然CollectionBase抽象类中,并没有抽象成员,

但是我们在继承CollectionBase抽象类后,也可以不写Ilist接口的方法实现,请问这是为什么?

Class Person:CollectionBase
{

}
这样写,还是能编译的,想请问下老师,Ilist接口的方法实现去哪了?Add,Remove这些方法可以自己写,也可以不写。


评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 黑马刘俊 于 2013-1-21 18:02 编辑

抽象类中的虚方法是可以有默认实现的吧,在帮助文档中有Ilist接口的显示实现,说的是由XNA Framework提供支持,没有写出具体代码

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
黑马刘俊 发表于 2013-1-21 18:01
抽象类中的虚方法是可以有默认实现的吧,在帮助文档中有Ilist接口的显示实现,说的是由XNA Framework提供支 ...

我是觉得很奇怪!因为CollectionBase是抽象类,没有实现代码倒可以说的过去,可是CollectionBase继承了Ilist而继承CollectionBase居然可以不实现Ilist接口
回复 使用道具 举报
在CollectionBase类的帮助文档下,它写了显示实现Ilist接口,应该说明这个抽象类为Ilist的方法实现了虚方法,所以你继承CollectionBase的类不实现Ilist接口的方法,就会默认使用CollectionBase类为Ilist接口写的虚方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马