-
De acordo com a documentação do VisualBasic no site da Microsoft[1], dentro do contexto de herança, o modificador Shadows possibilita que um método de uma classe pai seja redeclarado em uma classe filha, preservando a declaração desse método na classe pai, mas ocultando-o nas referências ao objeto de uma classe filha.
Adicionalmente, entende-se necessário explicar a diferença entre o modificador "Overrides" e "Shadows" no âmbito de Herança e Polimorfismo na linguagem VisualBasic.
Embora os supracitados modificadores sejam utilizados para redeclarar um método da classe pai em um classe filha, funcionam de maneira distinta.
Um exemplo clássico de polimorfismo é quando temos uma classe pai A, que possui um método X, e que possui classes filhas B e C, as quais redeclaram esse método X e implementam diferentes comportamentos.
Nesse sentido, poderíamos chamar esse método X, através de uma referência a um objeto da classe pai A. Por conseguinte, a depender da instância do objeto da classe filha passada como referência de um objeto da classe pai, executaríamos o método X da classe filha B ou o método X da classe filha C.
Tal comportamento acima é o que ocorre com a sobrecarga de métodos usando "Overrides". Todavia, se usássemos o modificador "Shadows" nos métodos redeclarados na classe filha, a invocação do método X iria depender de qual referência estamos utilizando.
Ou seja, se usarmos um objeto da classe filha, mas passando esse objeto como referência de um objeto da classe pai, executaríamos o método X da classe pai. Caso a referência fosse de um objeto da classe filha, executaríamos o método X da classe filha.
Gabarito do professor: Letra A.
REFERÊNCIAS:[1] Microsoft. Dotnet: Shadows (Visual Basic).
Disponível em: Site de Documentação do Visual Basic da Microsoft.
Acesso em: 08/07/2020.
-
Overrides is the more normal qualifier. If the child class redefines a base class function in this way, then regardless of how a child object is referenced (using either a base class or a child class reference) it is the child function that is called.
On the other hand, if the child class function Shadows the base class function, then a child object accessed via a base class reference will use that base class function, despite being a child object.
The child function definition is only used if the child object is accessed using a matching child reference.
Fonte: https://stackoverflow.com/questions/463209/shadows-vs-overrides-in-vb-net#:~:text=Overrides%20indicates%20that%20you%20are,etc%20does%20not%20even%20exis
-
Gabarito A
Sombreamento no Visual Basic:
Quando dois elementos de programação compartilham o mesmo nome, um deles pode ocultar ou sombrear o outro. Nessa situação, o elemento sombreado não está disponível para referência; em vez disso, quando seu código usa o nome do elemento, o compilador Visual Basic o resolve para o elemento de sombreamento.
A principal finalidade do sombreamento é proteger a definição de seus membros de classe. A classe base pode passar por uma alteração que cria um elemento com o mesmo nome de um que você já definiu. Se isso acontecer, o Shandows modificador força referências por meio de sua classe a ser resolvida para o membro que você definiu, em vez de para o novo elemento de classe base.
Fontes:https://docs.microsoft.com/pt-br/dotnet/visual-basic/programming-guide/language-features/declared-elements/shadowing
Outra Referência...
Shadows
O modificador Shadows significa que quando um membro de uma classe derivada possuir o mesmo nome que um membro do mesmo tipo em uma classe Pai , o membro na classe derivada substitui inteiramente todas as variações do método da classe Pai deixando a classe derivada com somente uma versão do método : aquele que foi definida na classe derivada.
Shadows também indica que o nome de um membro da classe Pai ou classe Base pode ser reutilizado na classe herdada mesmo que por outro tipo de membro. Assim você pode usar o nome de uma propriedade definida na classe Pai como um método na classe Filha. O método definido com o modificador Shadows vai "encobrir" o método da classe Pai.
Fontes:http://www.macoratti.net/09/10/vbn_cb1.htm