Overloads(C#中为new)和Overrides的区别
Overloads的方法不需要父类声明:Overridable(C#中为Virtual),可以直接使用
而Overrides的方法必须父类声明:Overridable(C#中为Virtual),否则无法Overrides
Overloads的方法不会覆盖父类中的定义,当以父类的类型调用时,会继续使用父类中的方法,则不会使用子类中的方法
Overrides的方法则会被子类所覆盖,不管使用父类还是子类的类型调用时,都会一律使用子类中的方法
由于Overloads不会覆盖父类中的定义,所以当父类中的其他方法调用此方法时,不会使用当前子类中Overloads的方法,而是还会继续使用原有类型中定义的方法
如:
Module Module1
Sub Main()
Dim pTest As New B
Console.WriteLine(pTest.Test1())
Console.ReadLine()
End Sub
End Module
Public Class A
Public Function Test1() As String
Return Test2() & "Test1"
End Function
Public Function Test2() As String
Return "A"
End Function
End Class
Public Class B
Inherits A
Public Overloads Function Test2() As String
Return "B"
End Function
End Class
输出:,继续使用父类中的方法,并没有使用子类中的方法
使用Overrides的方法则会使用被子类Overrides的方法。而不再使用父类中的原有方法
如:
Module Module1
Sub Main()
Dim pTest As New B
Console.WriteLine(pTest.Test1())
Console.ReadLine()
End Sub
End Module
Public Class A
Public Function Test1() As String
Return Test2() & "Test1"
End Function
Public Overridable Function Test2() As String
Return "A"
End Function
End Class
Public Class B
Inherits A
Public Overrides Function Test2() As String
Return "B"
End Function
End Class
输出为:
,使用了子类中的方法