更新:2007 年 11 月
在本课中,您将学习如何重写派生类的成员。
在上一课中,您学习了如何从基类继承和用新的属性扩展派生类。除了在派生类中添加新的属性或方法,可能还需要更改(即“重写”)现有属性或方法的行为。
例如,您可能创建一个从具有 StartEngine 方法的 Car 类中派生的 Truck 类。如果卡车使用的是柴油发动机,发动机的启动过程就可能和轿车不同;在这种情况下,您需要重写 StartEngine 方法以便更好地适应卡车的特点。
重写属性和方法
默认情况下,类中的属性和方法都不能被重写。要允许派生类重写属性或方法,必须用 Overridable 关键字声明属性或方法,将其标记为“可重写”。
Public Overridable Property EngineType As String
Public Overridable Sub StartEngine(ByVal EngineType As String)
从基类继承时,可以按原样使用标记为 Overridable 的属性和方法,也可以通过用 Overrides 关键字声明它们来修改它们以适合您的需要。
Public Overrides Property EngineType As String
Public Overrides Sub StartEngine(ByVal EngineType As String)
在上一课创建的 Players 类中,您可能需要重写 FullName 方法以包括选手的编号并删除返回中间名的代码。
试一试!
重写 FullName 方法
- 打开在上一课中创建的 Persons 项目。如果没有保存该项目,请返回上一课 在现有类的基础上生成类:使用继承,然后完成相应的步骤。 
- 在“解决方案资源管理器”中,选择“Persons.vb”节点,然后在“视图”菜单上选择“代码”。 
- 在代码编辑器中,修改 FullName 方法的声明,如下所示。 - Public Overridable Function FullName() As String
- 在“解决方案资源管理器”中,选择“Players.vb”节点,然后在“视图”菜单上选择“代码”。 
- 在代码编辑器中,将以下代码添加到类。 - Public Overrides Function FullName() As String FullName = FirstName & " " & LastName & ", #" & numberValue End Function
- 在“解决方案资源管理器”中,在“PlayerTest”项目中选择“Form1.vb”节点,然后在“视图”菜单上选择“代码”。 
- 在代码编辑器中修改 Button1_Click 事件代码,如下所示。 - MsgBox(player1.Position & " " & player1.FullName & _ " is now at bat.")
- 修改 Button2_Click 事件代码,如下所示。 - MsgBox(player2.Position & " " & player2.FullName & _ " is on deck.")
- 按 F5 运行程序,并单击每个按钮以显示结果。 - 注意那些结果和以前是一样的,尽管您现在使用的是重写的 FullName 方法。 
- 在“文件”菜单上,选择“全部保存”。 
后续步骤
在本课中,您学习了如何重写方法。在下一课中,您将学习如何使用集合来管理相似对象组。
下一课:使用集合管理多个对象