打印本文 打印本文 关闭窗口 关闭窗口
Henry的VB.NET之旅(六)—重载与隐藏
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1895  更新时间:2009/4/23 19:01:32  文章录入:mintao  责任编辑:mintao

        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]  下一页

打印本文 打印本文 关闭窗口 关闭窗口