大李没告诉我接口与抽象类的区别,什么时候用接口,什么时候用实现继承。弄得我中饭也没吃好,老在琢磨这事,这不,一吃完饭,我就冲上楼,一个房间一个房间转,到处找大李。
过了好一阵,这老哥才和几个同事说说笑笑地回到办公室,我立即走上前,半请半拉地把他拽到电脑旁。“大李哥,我实在想得头晕,既然在VB.NET中接口有了这么大的发展空间,在形式上与抽象类如此相似,那么它们有什么区别?什么时候用接口呢?”
听着我一连串的问题,大李微笑着摇摇头,拍拍我的肩膀说:“小兄弟,不光是你弄不清,其实就是很有经验的程序设计师也对什么时候用接口,什么时候用抽象类而头痛咧。”
此话一出,我更是疑惑重重。不过反而安下心来,老鸟们都弄不清的问题,我不清楚也不必心中不安了。哈……
大李看着我忽忧忽喜的表情露出了一丝诧异,不过他没有理会,继续说:“但是这个问题我们还是有必要好好分析一下,让我们更明白接口与抽象类的具体含义。”
“我们早说过,抽象类是一种不能实例化而必须从中继承的类。抽象类可以完全实现,但更常见的是部分实现或者根本不实现,从而封装继承类的通用功能,它可以提供已实现的成员,因此,可以用抽象类确保特定数量的相同功能,但不能用接口这样做。”
“接口是完全抽象的成员集合,它的成员都无法在接口定义时实现,我们可以将它看作是为操作定义合同,接口的实现完全留给开发者去做。它们之间的区别,如果认真分析,还是有不少的:在VB.NET中,类只能是从一个基类继承,所以如果要使用抽象类为一组类提供多态性,这些类必须都是从那个类继承的;接口就不一样了,它不但可以用一个类或结构实现多个接口,一个接口还可以有多个实现。”
编缉推荐阅读以下文章
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!