【问题标题】:Interface require inheritance of base class接口需要继承基类
【发布时间】:2017-07-18 14:15:32
【问题描述】:

我有一个界面元素。我想使用正确的功能。 但是由于函数(I.F)的实现,它总是使用基类函数

界面

Public Interface I
    Function F() As Boolean
End Interface

接口I的基类实现

Public MustInherit Class B
    Implements I

    Public Overridable Function F() As Boolean Implements I.F
        Return True
    End Function
End Class

类使用基类并将用作对象

Public Class C1
    Inherits B
    Public Overloads Function F() As Boolean
        Return False
    End Function
End Class

Public Class C2
    Inherits B    
End Class

样本

Sub Main()
        Dim x As I
        x = New C1
        If x.F Then
            Console.WriteLine("c1 = true")
        Else
            Console.WriteLine("c1 = false")
        End If

        x = New C2
        If x.F Then
            Console.WriteLine("c2 = true")
        Else
            Console.WriteLine("c2 = false")
        End If
        Console.ReadLine()
    End Sub

结果:

c1 = true
c2 = true

c1 应该是假的,因为他自己的函数“F”。

【问题讨论】:

    标签: vb.net inheritance interface


    【解决方案1】:

    你不想重载它,你想覆盖它:

    Public Overrides Function F() As Boolean
        Return False
    End Function
    

    重载是当你想要一个不同的参数列表时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-12
      • 2021-11-18
      • 1970-01-01
      • 2010-10-07
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      相关资源
      最近更新 更多