I find this table from MSDN to be useful to explain differences between shadowing and overriding: The main constraint on overriding is that it needs permission from the base class with the 'overridable' keyword. Shadowing does not require permission of base class.
Criterion Shadowing Overriding Purpose Protecting against a subsequent base class modification introducing a member you have already defined in your derived class Achieving polymorphism by defining a different implementation of a procedure or property with the same calling sequence Redefined element Any declared element type Only a procedure (Function or Sub) or property Redefining element Any declared element type Only a procedure or property with the identical calling sequence1 Accessibility Any accessibility Cannot expand the accessibility of overridden element (for example, cannot override Protected with Public) Readability and writability Any combination Cannot change readability or writability of overridden property Keyword usage Shadows recommended in derived class; Shadows assumed if neither Shadows nor Overrides specified Overridable required in base class; Overrides required in derived class Inheritance of redefining element by classes deriving from your derived class Shadowing element inherited by further derived classes; shadowed element still hidden2
If you have the better answer, then send it to us. We will display your answer after the approval.