Это недавняя ссылка MSDN: Различия между затенением и переопределением
Shadowing защищает от последующей модификации базового класса, которая вводит член, который вы уже определили в ваш производный класс. Обычно вы используете затенение в следующих случаях:
** Вы ожидаете, что ваш базовый класс может быть изменен, чтобы определить элемент с тем же именем, что и ваш. *
** Вы хотите свободу изменения типа элемента или последовательности вызовов. *
(я еще не исследовал использование в отношении области и типов)