黑马程序员技术交流社区

标题: 关于CollectionBase抽象类的一些疑问 [打印本页]

作者: 罗志强    时间: 2013-1-21 13:22
标题: 关于CollectionBase抽象类的一些疑问
本帖最后由 ShowStyle 于 2013-1-22 11:32 编辑

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

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

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

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

Class Person:CollectionBase
{

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



作者: 黑马刘俊    时间: 2013-1-21 18:01
本帖最后由 黑马刘俊 于 2013-1-21 18:02 编辑

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


作者: 罗志强    时间: 2013-1-22 08:45
黑马刘俊 发表于 2013-1-21 18:01
抽象类中的虚方法是可以有默认实现的吧,在帮助文档中有Ilist接口的显示实现,说的是由XNA Framework提供支 ...

我是觉得很奇怪!因为CollectionBase是抽象类,没有实现代码倒可以说的过去,可是CollectionBase继承了Ilist而继承CollectionBase居然可以不实现Ilist接口
作者: 黑马刘俊    时间: 2013-1-22 11:42
在CollectionBase类的帮助文档下,它写了显示实现Ilist接口,应该说明这个抽象类为Ilist的方法实现了虚方法,所以你继承CollectionBase的类不实现Ilist接口的方法,就会默认使用CollectionBase类为Ilist接口写的虚方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2