当前位置:  开发笔记 > 编程语言 > 正文

从子实例调用被重写的基类方法

如何解决《从子实例调用被重写的基类方法》经验,为你挑选了1个好方法。

请考虑以下代码:

Public Class Animal

Public Overridable Function Speak() As String
    Return "Hello"
End Function

End Class

Public Class Dog
    Inherits Animal

    Public Overrides Function Speak() As String
        Return "Ruff"
    End Function

End Class

Dim dog As New Dog
Dim animal As Animal
animal = CType(dog, Animal)
// Want "Hello", getting "Ruff"
animal.Speak()

如何将Dog的实例转换/ ctype到Animal并让Animal.Speak被调用?



1> Steven A. Lo..:

你没有; 子类的方法通过继承的定义覆盖超类的方法.

如果您希望重写的方法可用,请在子类中公开它,例如

Public Class Dog 
    Inherits Animal
    Public Overrides Function Speak() As String
        Return "Ruff"
    End Function
    Public Function SpeakAsAnimal() As String
        Return MyBase.Speak()
    End Function
End Class

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有