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
输出为:
,使用了子类中的方法