SóProvas


ID
3411415
Banca
VUNESP
Órgão
Prefeitura de Olímpia - SP
Ano
2019
Provas
Disciplina
Programação
Assuntos

No VisualBasic.Net, o modificador Shadows faz com que o método

Alternativas
Comentários
  • 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 paimas 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