VB.NET 重载、重写与隐藏

重载、重写与隐藏是继承( Inherits )中的三个重要概念。

 

一、重载

 

相同方法或属性的不同实现,根据参数数量、类型的不同有多个版本的实现方式。

 

用法

 

定义方法或属性时使用 Overloads 关键字,程序将根据参数的数量、类型和顺序选择正确的版本实现。

 

示例

    Public Class TheClass

        Public Overloads Sub ToOverload(ByVal value As Integer )

            MsgBox("I got an integer:" & CStr (value))

        End Sub

        ' 重载

        Public Overloads Sub ToOverload(ByVal value As String )

            MsgBox("I got a string:" & value)

        End Sub

    End Class

使用

    Sub Main()

        Dim MyClass As TheClass

        MyClass.ToOverload(9527)

        MyClass.ToOverload("Hello Nobi!" )

    End Sub

运行结果

 

第一个对话框显示: I got an integer 9527

第二个对话框显示: I got a string Hello Nobi!

 

例外

 

在同一个类中重载时可以省略 Overloads 关键字。

 

二、重写

 

与重载不同,重写方法的参数数量、类型都完全相同,直接代替其所继承的方法或属性。

 

用法

用于派生类。

基类的方法或属性定义时使用下列修饰符控制重写:

 

关键字

功能

Overridable

允许重写

NotOverridable

禁止重写

MustOverride

必须重写

Overrides

重写方法、属性,在派生类中实现

注:如果使用了 MustOverride ,则基类必须是 MustInherit 的抽象类。

 

示例

    ' 基类

    Public Class TheBase

        Public Overridable Sub Talk()

            MsgBox("What's up?" )

        End Sub

    End Class

    ' 派生类

    Public Class TheDerived

        Inherits TheBase

        Public Overrides Sub Talk()

            MsgBox("I'm not the base." )

        End Sub

    End Class

 

使用

    Sub Main()

        Dim TestClass As TheDerived

        TestClass.Talk()

    End Sub

 

运行结果

 

对话框显示: I'm not the base.

 

三、隐藏

 

创建大范围成员的局部版本,也可以用其他类型来隐藏一种类型,可以声明相同名称的属性,以隐藏继承的方法。

当派生类中某方法或属性的名称和范围与基类中的方法或属性冲突时,需要使用 Shadows 关键字。

此时将使用生存周期最短的那一个(即更加 局部 )。

 

用法

 

用于派生类。

 

示例

基类与派生类均定义了 Value 成员,名称冲突,因此需要在派生类中使用 Shadows 关键字声明。

    ' 基类

    Class TheBase

        Public Value As Double = 3.14

    End Class

    ' 派生类

    Class TheDerived : Inherits TheBase

        Public Shadows ReadOnly Property Value() As Double

            Get

                Return 9527

            End Get

        End Property

    End Class

 

使用

当使用 TheDerived 类对象的 Value 成员时,将选取最 局部 Value 属性,而不是基类的 Value 变量。

    Sub Main()

        Dim TestClass As TheDerived

        MsgBox(TestClass.Value)

    End Sub

 

运行结果

 

对话框显示: 9527

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值