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.
Trending News
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
- ?Lv 63 months agoFavorite 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.