实例3-9 重载的运用
该实例实现步骤如下。
1 创建模块
在本章的项目chapter3下,右键单击该项目名下面的文件夹“类及对象”,在弹出菜单中选择“添加”→“模块”菜单命令,在弹出的对话框中输入模块名称BurdenModule,单击“添加”按钮完成模块的创建。
2 添加代码
双击BurdenModule.vb进入该模块的代码编辑窗口,向其中添加代码3-18中的代码。
代码3-18 BurdenModule.vb
01. Module BurdenModule 02. Public Class TheClass 03. Overloads Sub ToOverload(ByVal value As Integer) '定义参数为整数的 '重载方法 04. Console.WriteLine("I got an integer:" & CStr(value)) 05. End Sub 06. '重载 07. Overloads Sub ToOverload(ByVal value As String) '定义参数为字符串 '的重载方法 08. Console.WriteLine("I got a string:" & value) 09. End Sub 10. End Class 11. Sub Main() 12. Dim myCl As New TheClass 13. myCl.ToOverload(27) '调用类中参数为整数的方法 14. myCl.ToOverload("Hello World!") '调用类中参数为字符串的方法 15. End Sub 16. End Module
代码3-18执行步骤如下:
① 第3行到第5行代码定义参数为整数的重载方法ToOverload(),实现输出一个整数;
② 第7行到第9行代码定义参数为字符串的重载方法ToOverload(),实现输出一个字符串;
③ 第12行代码实例化上面的类TheClass;
④ 第13行代码调用类中的参数为整数的方法ToOverload();
⑤ 第14行代码调用类中参数为字符串的方法ToOverload()。
3 运行结果
按F5键,运行程序,结果如图3-10所示。
图3-10 实例3-9运行结果
2.重写
派生类继承其基类中定义的属性和方法。这很有用,因为它意味着当这些项适合于要使用的类时,可以重用它们。如果继承成员不能按原样使用,则可以选择使用Overrides关键字定义新实现,基类中的属性或方法使用Overridable关键字标记,或者通过重新在派生类中定义成员来隐藏该成员。
实际上,重写的成员经常用于实现多态性。
下列规则适用于重写方法。
· 仅可重写在基类中用Overridable关键字进行标记的成员。
· 默认情况下,属性和方法为NotOverridable(禁止重写)。
· 重写的成员必须具有与从基类继承的成员相同的参数。
· 成员的新实现可通过在方法名称前指定MyBase来调用父类中的原始实现。
· 使用MustOverride关键字定义新实现时表示必须重写。如果使用了MustOverride,则基类必须是MustInherit的抽象类。
下面以实例说明重写的运用。