Yahoo Answers is shutting down on May 4th, 2021 (Eastern Time) and beginning April 20th, 2021 (Eastern Time) the Yahoo Answers website will be in read-only mode. There will be no changes to other Yahoo properties or services, or your Yahoo account. You can find more information about the Yahoo Answers shutdown and how to download your data on this help page.

Auu, bom dia, alguém sabe me explicar a diferença entre ocultar um método e usar o polimorfismo na programação orientada a objetos?

Neste caso vou usar como exemplo a linguagem C#

Para ocultar um método usamos a palavra new na classe filha e assim ao executar o programa o método da classe base será "escondido", será executado o método da classe filha.

public new void Exemplo(){

}

No polimorfismo, temos que usar a palavra virtual no método da classe base e depois dar um override na classe filha.

Classe mãe

public virtual void Exemplo(){

}

Classe filha 

public override void Exemplo(){

}

Mas qual realmente a diferença entre usar new ou overrride?

1 Answer

Rating
  • ?
    Lv 6
    3 months ago
    Favorite Answer

    Há uma boa diferença, enquanto o modificador override reescreve o método marcado com virtual da classe base, o modificador new simplesmente o oculta e o compilador é instruído a usar o método da classe derivada.

    No seu exemplo de uso do 'override', se você fizer:

    Mae foo = new Filha();

    foo.Exemplo(); // usa o método da classe Filha

    Filha bar = new Filha();

    foo.Exemplo(); // usa o método da classe Filha

    Agora no seu exemplo com 'new':

    Mae foo = new Filha();

    foo.Exemplo(); // usa o método da classe Mae

    Filha bar = new Filha();

    foo.Exemplo(); // usa o método da classe Filha

    Enfim, utilizando 'new' é como se você tivesse dois métodos e o compilador irá sempre chamar o método de acordo com o tipo da referência.

Still have questions? Get your answers by asking now.