Imports System.Console Namespace NS_ShadowsDemo Module Demo Public Sub Main() WriteLine("Shadows Demo") WriteLine() WriteLine("Overloads...............") Dim objOverloads As DerivedClassWithOverloads = New DerivedClassWithOverloads objOverloads.Other() objOverloads.OverrideMethod() objOverloads.OverrideMethod(1) WriteLine("") WriteLine("Shadows...............") Dim objShadows As DerivedClassWithShadows = New DerivedClassWithShadows objShadows.Other() objShadows.OverrideMethod() objShadows.HideMe() 'This causes error because Shadows replaces all 'flavors' of method 'objShadows.OverrideMethod(1) ReadLine() End Sub End Module Public Class BaseClass Public Overridable Overloads Sub OverrideMethod() WriteLine("Base OverrideMethod No Args") End Sub Public Overridable Overloads Sub OverrideMethod(ByVal o As Object) WriteLine("Base OverrideMethod w/Arg") End Sub Public Overridable Sub HideMe() WriteLine("Base HideMe method ") End Sub Public Sub Other() WriteLine("Base Other method – not overridable") End Sub End Class Public Class DerivedClassWithOverloads Inherits BaseClass ' this will cause an error 'Public Overrides Sub OverrideMethod() ' WriteLine("Derived OverrideMethod") 'End Sub Public Overloads Overrides Sub OverrideMethod() WriteLine("Derived OverrideMethod") End Sub End Class Public Class DerivedClassWithShadows Inherits BaseClass Public Shadows Sub OverrideMethod() WriteLine("Derived OverrideMethod in DerivedClassWithShadows") End Sub Public Shadows Sub HideMe() WriteLine("DerivedClassWithShadows HideMe") End Sub Public Shadows Sub OverrideMethod(ByVal o As Object) WriteLine("Derived OverrideMethod in DerivedClassWithShadows w/Arg") End Sub End Class End Namespace