background image

 

三、完善的面向对象支持
VB.NET 提供了完善的面向对象编程支持,是一种真正的 OO 语言。
完善的面向对象支持应该包括封装( Encapsulation),继承(Inheritance)和多态性
(Polymorphism)。当前的 VB6 已经部分地实现了这些支持,但仍因某些地方未能符合标
准而受到责难。
封装是指对象只显露公用的方法和属性。VB6 已经提供了健壮的封装支持,具体通过
Public 和 Private 关键词实现,这两个关键词既可以用于方法,也可以用于属性。VB.NET
进一步完善了 VB6 的封装支持,增加了一个 Protected 关键词。

多态性即为 多种形态 ,VB 从 4.0 开始已经提供多态性支持,它在 VB.NET 中没有什么
变化。然而,由于 VB.NET

——

中类支持两种类型的继承

接口继承和实现继承,多态性将

有更广泛的用途。
VB6 已经支持一种称为接口继承(interface inheritance)的继承形式,VB.NET 支持实现
继承(implementation inheritance)完善了继承机制。过去,我们用 VB 的接口继承模拟实
现对象继承,但现在不必再采用这种模拟技术。正如其他面向对象的语言,在 VB.NET 中
我们可以覆盖基类的方法和属性,也可以借助多态性创建出健壮的、可升级的组件。例如,
假设有一个从基类 Crane 继承的 ForkLift 类,利用下面的代码可以覆盖基类中 Lift 方法的
默认实现:

Public Class ForkLift 
Inherits Crane
Overrides Sub Lift(ByRef _ 
Height As Double) 
Height = Height + 10 
End Sub 
End Class

VB.NET 不仅允许覆盖方法或属性,而且还支持方法重载(Overload)。重载是一种定义
具有相同名字、不同数据类型的方法或者属性的能力。例如,假设有一个对不同数据类型
的数组进行排序的组件,我们无需为它定义多个排序方法的名字(每种数据类型一个方
法名字);相反,我们可以重载单个方法名字:

Overloads Sub SortArray(ByRef _ 
aValues()As String) 
... 
Overloads Sub SortArray(ByRef _ 
aValues() As Integer) 
... 
Overloads Sub SortArray(ByRef _ 
aValues() As Object)

在 VB.NET 中,窗体以类模块形式出现。它意味着类本身包含了所有构造窗体所必需的代
码。你可能会奇怪为什么 VB.NET 中会看到这些代码而以前不行,事实上这个变化带来了
许多强大的新功能,比如继承这些窗体的能力。 Microsoft

称这种技术为 可视化继承

(Visual Inheritance)。假设我们为大多数对话窗口设计了一个标准的格式,比如窗体某一