Henry的VB.NET之旅(六)—重载与隐藏
韩睿
大李坐在转椅上左右晃动着,手中的一个硬币在他指间灵巧地翻滚着。“hi, Henry。你对重写与重载的意思理解是怎么样的呢?”
我正盯着他手中的硬币发愣呢,“哦,重写,就是您刚才举的示例中,在派生类中用Overrides重新编写有Overridable标识的基类的方法或属性;重载么,就是我们可以用同样的名称,在一个类中用不同的参数列表来创建多个方法和属性,在调用时就可以适应不同参数类型的要求。”
“在一个类中创建?”大李的左眉向上一挑,我就知道我可能说错了。但是,好象没有说错什么呀。
“那好,你看一下,这样的写法会有什么结果?”
Public Class CBaseHenry
Public Sub oldY()
Console.WriteLine("基类的oldY方法")
End Sub
End Class
Public Class CDerivedHenry
Inherits CBaseHenry
Public Overloads Sub oldY(ByVal j As Integer)
Console.WriteLine("派生类的oldY方法")
End Sub
End Class
Public Sub Main()
Dim obj As CDerivedHenry = New CDerivedHenry()
……
然后大李写了obj.oldY这时出现的智能感知菜单上出现了参数列表:
“咦,第二个oldY()无参数过程签名应该是基类定义的呀。为什么在派生类的实例中也会出现呀!”我不由好奇起来。
“没错。还记得我上次曾显式编写构造函数的事吗?我用了一个mybase.new()用于继承下基类的性质。现在没有写,其实是一种默认的隐式调用。”大李一说我就明白了,其实现在的派生类应该是内含两个oldY方法了,无参数的oldY()其实就是基类的方法,是由于Overloads和Mybase.new()双重作用的影响。
“那你再看这样的变化情况。”大李象是看出我已经明白了这个问题。他在派生类中添加了一个用Overloads标识的与基类形式一致的无参数oldY()。
Public Class CBaseHenry
Public Sub oldY()
Console.WriteLine("基类的oldY方法")
End Sub
End Class
Public Class CDerivedHenry
Inherits CBaseHenry
Public Overloads Sub oldY(ByVal j As Integer)
Console.WriteLine("派生类的oldY方法1")
End Sub
[1] [2] [3] 下一页 [C语言系列]NET 中C#的switch语句的语法 [系统软件]托拽Explore中的文件到VB.net的窗口 [系统软件]Boost库在XP+Visual C++.net中的安装 [常用软件]新配色面板:Paint.Net3.0RC1官方下载 [常用软件]用内建的“Net Meeting”聊天 [VB.NET程序]Henry的VB.NET之旅(三)—共享成员 [VB.NET程序]Henry的VB.NET之旅(二)—构造与析构 [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体 [VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET) [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
|