VB.NET继承类是一个这样的特征即允许你扩展类,如果你需要一些功能,你可以创造一个新类,如果你需要的功能中的部分功能已经能由一个已经存在的类提供了,你可以扩展原来的那个类来构建一个新类。那么你新建的这个类成为子类或者VB.NET继承类,原来的那个类称为父类或者基类。扩充类的过程称为扩展,有时术语 subclass或inherit 用于描述扩展类的行为。在VB.NET中一个类只能有一个父类,多个父类的情况是不允许的。
在语法构成上,声明一个扩展类在类名后面使用分号,分号后面使用Inherits和父类名,例如,扩展类Employee创建一个新类Manager,代码如下
- Listing 9: Extending a class
- Imports System
- Class Employee
- Dim salary As Decimal = 40000
- Dim yearlyBonus As Decimal = 4000
- Public Sub PrintSalary()
- ' print the salary to the Console
- Console.Write(salary)
- End Sub
- End Class
- Class Manager: Inherits Employee
- End Class
如果单词Inherits 显示在下一行,那么就不需要分号,如:
- Class Manager
- Inherits Employee
- End Class
现在你可以初始化一个Manager对象,使用Manager对象中的成员,如下面的代码
- Class Employee
- Public salary As Decimal = 40000
- Public yearlyBonus As Decimal = 4000
- Public Sub PrintSalary()
- ' print the salary to the Console
- Console.Write(salary)
- End Sub
- End Class
- Class Manager: Inherits Employee
- End Class
- Module Module1
- Public Sub Main()
- Dim manager As Manager
- manager = New Manager()
- manager.PrintSalary()
- End Sub
- End Module
下面的例子中显示了在manage类中添加一个新方法PrintBonus
- Class Manager: Inherits Employee
- Public Sub PrintBonus()
- Console.Write(yearlyBonus)
- End Sub
- End Class
注意成员访问限制的使用,比如说如果设定yearlyBonus域为私有,那么manage类就不能访问他,否则在编译时就会得出错误结论。
#t#VB.NET继承类只是一个普通的实践。事实上,.NET Framework类库由不同层次的类组成,他们分别继承于其他的类。比如,Windows.Forms名字空间中的button类是 ButtonBase类的子类,而ButtonBase类本身又是Control类的子类,所有类最终都以System.Object作为他们的根,在.NET Framework类库中System.Object又称为根或者超类。
Public Class MyForm : Inherits System.Windows.Forms.Form
End Class
声明的这个空白类,经编译执行后生成一个windows表单,你一行代码都用不作写就可以创建一个表单,这是因为myform继承于System.Windows.Forms.Form,他也继承了form的功能。