You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重写内部函数?实现继承类替换基类m方法中的xxxx函数

解决VB.NET继承类替换基类方法内部调用函数的问题

咱们先分析下你当前代码的问题:你在子类y5里定义了和基类x同名的xxxx()方法,但基类的m()方法调用的还是它自己的xxxx()实现,根本没用到子类的版本。这是因为你没给方法设置可重写的特性,没法触发多态行为。

要实现你想要的效果,只需要两步调整:

  • 把基类的xxxx()方法标记为Overridable,允许子类重写它
  • 在子类的xxxx()方法前加上Overrides关键字,明确表示要重写基类的方法

修正后的完整代码如下:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim h As New y5
    h.xxxx() ' 这里会直接调用子类的xxxx(),弹出"KK"
    h.m()    ' 现在基类的m()会调用子类重写后的xxxx(),弹出"KK"
End Sub

Class x
    Friend Overridable Sub xxxx() ' 标记为可重写
        MsgBox("JJ")
    End Sub
    Sub m()
        xxxx() ' 现在会根据实例的实际类型调用对应的xxxx()
    End Sub
End Class

Class y5
    Inherits x
    Friend Overrides Sub xxxx() ' 重写基类的方法
        MsgBox("KK")
    End Sub
End Class

补充说明

如果不使用Overridable和Overrides,子类的xxxx()其实是默认用Shadows关键字隐藏了基类的方法——这意味着只有当你直接用子类类型的变量调用xxxx()时才会生效,但基类内部的调用还是会指向自己的版本。而通过设置可重写特性,就能实现运行时多态,让基类的方法调用自动适配子类的实现。

内容的提问来源于stack exchange,提问作者Visula Kavinda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:45:28