zoukankan      html  css  js  c++  java
  • 放在首页,希望你们帮我来解说一下这个简单的问题,有没有其它的实现方式。

    有两个接口
    Public Interface IMessage
        Sub ShoMessage()
    End Interface

    Public Interface ITextInfo
        ReadOnly Property Text() As String
    End Interface

    实现这两个接口的类有两个
    Public Class Message
        Implements IMessage
        Public Sub ShoMessage() Implements IMessage.ShoMessage
            MsgBox("Message")
        End Sub
    End Class

    Public Class TextInfo
        Implements ITextInfo
        Public ReadOnly Property Text() As String Implements ITextInfo.Text
            Get
                Return "TextInfo"
            End Get
        End Property
    End Class

    现在有一个第三方的类对这两个类进行操作
    Public Class Manager
        Public Sub Execute(ByVal obj As Object)
            MsgBox("无效的类")
        End Sub

        Public Sub Execute(ByVal obj As ITextInfo)
            MsgBox(obj.Text)
        End Sub

        Public Sub execute(ByVal obj As IMessage)
            obj.ShoMessage()
        End Sub
    End Class

    下面的调用程序。
        Sub Main()
            Dim m As New Manager
            Dim obj As Object = New TextInfo
            m.Execute(obj)
            obj = New Message
            m.Execute(obj)
            Console.ReadLine()
        End Sub

    为什么总是执行到了
       Public Sub Execute(ByVal obj As Object)
            MsgBox("无效的类")
        End Sub
    这个方法。

    目前我所知道的,如果外部不使用object能正确的找到对应的方法.

    如果去掉Public Sub Execute(ByVal obj As Object)方法,也能执行正确,如果我目前需要有Public Sub Execute(ByVal obj As Object)这样一个方法,也能执行相应接口的方法啊。

  • 相关阅读:
    Ubuntu中的vsftpd配置
    Ubuntu学习-增加更新源及安装软件及卸载软件
    Ubuntu16.04下安装sublime text3
    需要读的书
    同一机器 部署 两个 jboss
    log4j 总结 精华
    oracle 笔记
    oracle 用户 多个表空间
    json
    json 基础
  • 原文地址:https://www.cnblogs.com/zqonline/p/720088.html
Copyright © 2011-2022 走看看