2017-02-27 4 views
2

Ich habe Elemente einer Schnittstelle. Ich möchte die richtige Funktion verwenden. Aber wegen der Werkzeuge der Funktion (IF), es immer die Funktion der Basisklasse verwendenSchnittstelle erfordern Vererbung der Basisklasse

Schnittstelle

Public Interface I 
    Function F() As Boolean 
End Interface 

Basisklasse I Interface implementieren

Public MustInherit Class B 
    Implements I 

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

Klassen Basisklasse verwendet und wird als Objekt verwendet werden

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

Public Class C2 
    Inherits B  
End Class 

Probe

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 

Ergebnis:

c1 = true 
c2 = true 

c1 sollte wegen seiner eigenen Funktion "F" falsch sein.

Antwort

6

Sie wollen nicht zu überlasten, sollten Sie es außer Kraft setzen:

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

Overloading ist, wenn Sie eine andere Argumentliste haben wollen.

Verwandte Themen