接口需要继承基类

for*_*orX 2 vb.net inheritance interface

我有一个接口的元素.我想使用正确的功能.但由于函数(IF)的实现,它总是使用基类函数

接口

Public Interface I
    Function F() As Boolean
End Interface
Run Code Online (Sandbox Code Playgroud)

接口I的基类实现

Public MustInherit Class B
    Implements I

    Public Overridable Function F() As Boolean Implements I.F
        Return True
    End Function
End Class
Run Code Online (Sandbox Code Playgroud)

使用基类的类将用作对象

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

Public Class C2
    Inherits B    
End Class
Run Code Online (Sandbox Code Playgroud)

样品

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
Run Code Online (Sandbox Code Playgroud)

结果:

c1 = true
c2 = true
Run Code Online (Sandbox Code Playgroud)

由于他自己的功能"F",c1应该是假的.

Lar*_*ech 6

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

Public Overrides Function F() As Boolean
    Return False
End Function
Run Code Online (Sandbox Code Playgroud)

重载是指您想拥有不同的参数列表.