VB.NET有很多值得学习的地方,这里我们主要介绍VB.NET多重继承,包括介绍USPresident能够衍生自多个基类等方面。
VB.NET多重继承
我注意到了一个情况,那就是C#允许多重继承(multiple inheritance),但是在VB.NET里我只能使用深层继承(deep inheritance)。在VB.NET里能够使用多重继承吗?或者说VB.NET的程序员就只能如此了?
在提出这个问题的时候,我可能已经在考虑C++了。C++能够支持多重继承,但是C#和VB.NET都不支持。它们走了和Java相同的路线,也就是说它们只允许来自单基类(single base class)的继承。继承关系表示两个类之间的IS A关系。如果考虑到一个类有可能通过多IS A 关系被分类,那么缺少多重继承就成为了这种可能性的一个因素。让我们以Employee、USPresident和USCitizen这三个类为例子,它们之间的关系是:USPresident IS A Employee、USPresident IS A USCitizen
在C++里,USPresident能够衍生自多个基类;而在.NET的语言里,它就不能这样。
如果VB.NET多重继承得到了支持,那么USPresident就会同时继承自Employee和USCitizen。但是在.NET的语言里,你必须运用接口来表示多重IS A关系。就和Java一样,一个类能够继承自一个基类,而一个类也能够实现多个接口。
根据.NET框架的文档(C#语言规范),接口(interface)这个关键字会声明参考类型拥有抽象成员。在本文里,成员(members)这个术语表示一个方法、属性,或者索引符;而抽象(abstract)这个术语表示没有提供实现。在创建接口的时候,习惯的(命名)方法是在接口名称之前加上字母 I。尽管你可以忽略这个习惯,但是你会发现遵守这个习惯会让区别基类和接口变得尤其简单。在Java里,开发人员习惯在接口(名称)的后面加上able。从个人的角度来看,我喜欢把这些技巧用在我自己的接口上。用来描述类和接口之间关系的术语有:我们用“x继承自y类”来表示继承;用“x实现y接口”来表示接口的关系。冒号(:)是用于实现接口的操作符。
继承代码有下列形式:
VB.NET
- Class Derived Inherits Base
C#.NET
- Class Derived: Base
【编辑推荐】