Hallo zusammen,
mir scheint Overloads hat ähnlichen
Effekt wie Shadows.
Jedenfalls in meinem kleinen Beispiel ist keine Unterschied feststellbar:
Public Class Class1
Private newPropertyValue As Integer = 4
Sub test()
'ReadOnly b As Integer
End Sub
Public Function f() As Integer
Return 1
End Function
End Class
Public Class Class2
Inherits Class1
’ Overloads scheint erst mal wie Shadows
’ Overrides brucht auf anderers Seite Overridable
Public Function f(ByVal da As Int16) As Integer
Return 2
End Function
End Class
Public Class Class1
Public Function f() As Integer
Return 1
End Function
End Class
Public Class Class2
Inherits Class1
' Overloads scheint erst mal wie Shadows
' Overrides brucht auf anderers Seite Overridable
Public Function f(ByVal da As Int16) As Integer
Return 2
End Function
End Class
...
Sub Main()
MsgBox(c1.f) ' 1
MsgBox(c2.f(1)) ' 1
End Sub
Ich hab ein Beispiel geschrieb
Hi all, folgendes beantwortet wohl die Fragen:
Public Class Class2
Inherits Class1
Shadows Sub MethodA()
go("A", "2", "Shadows")
End Sub
Overrides Sub MethodB()
' nimmt Methode des Instanz-Typs
go("B", "2", "Overrides")
End Sub
Sub MethodC()
' nimmt Methode des Instanz-Typs
go("C", "2")
End Sub
Sub MethodD()
go("D", "2")
End Sub
End Class
Public Class Class1
Function go(ByRef m As String, ByRef c As String, Optional ByRef kommentar As String = "") As String
Dim temp As String
temp = CStr(IIf(c = "2", " LateBinding ", ""))
Console.WriteLine("" & m & " " & "" & c & " " & temp & " " & kommentar)
Return ""
End Function
Sub MethodA()
go("A", "1")
End Sub
Overridable Sub MethodB()
' nimmt Methode des Instanz-Typs
go("B", "1", "Overridable")
End Sub
Sub MethodC()
' nimmt Methode des Instanz-Typs
go("C", "1")
End Sub
Shadows Sub MethodD()
go("D", "2", "Shadows")
End Sub
End Class
Module Module1
Sub Main()
Dim C1 As Class1
C1 = New Class2
Console.WriteLine("Dim C1 As Class1")
Console.WriteLine("C1 = New Class2")
Console.WriteLine("")
C1.MethodA() ' Class1 called
C1.MethodB() ' Class2 called
C1.MethodC() ' Class2 called
C1.MethodD() ' Class2 called
Console.ReadKey()
End Sub
End Module