下面的例子中显示了在manage类中添加一个新方法PrintBonus
| Listing 11: Adding a method to the derived class Class Manager: Inherits Employee Public Sub PrintBonus() Console.Write(yearlyBonus) End Sub End Class |
注意成员访问限制的使用,比如说如果设定yearlyBonus域为私有,那么manage类就不能访问他,否则在编译时就会得出错误结论。
继承只是一个普通的实践。事实上,.NET Framework类库由不同层次的类组成,他们分别继承于其他的类。比如,Windows.Forms名字空间中的button类是ButtonBase类的子类,而ButtonBase类本身又是Control类的子类,所有类最终都以System.Object作为他们的根,在.NET Framework类库中System.Object又称为根或者超类。
list12示范了继承强大的能力。
| Listing 12: Extending System.Windows.Forms.Form Public Class MyForm : Inherits System.Windows.Forms.Form End Class |
声明的这个空白类,经编译执行后生成一个windows表单,你一行代码都用不作写就可以创建一个表单,这是因为myform继承于System.Windows.Forms.Form,他也继承了form的功能。
NotInheritable类
要使你的类不能够被继承,可以使用关键字NotInheritable。例如list13中的类Calculator就不能被继承
| Listing 13: NotInheritable Class Calculator End Class |
如果试图扩展这个类将产生一个编译错误,那么既然继承有这么大的好处,为什么要让类不能被继承呢?其中一个原因是你不想让你的类被其他人扩展,另外一个原因是继承类产生了更快的代码。无论如何你应该谨慎的使用继承类,因为它可能导致面向对象编程的主要目的的失败。
还有一种类叫final类,他和其他面向对象语言中的final类相同。
结论
vb.NET支持众多的面向对象的特征,本文显示了vb.NET的不同特征,并提供了13个例子,可以以此开始学习vb.NET。