Conceitos e Exemplos – Virtual, Override e Modificador Sealed: Estrutura da Linguagem

Neste artigo veremos os conceitos e exemplos das palavras-chave Virtual e Override, e do modificador Sealed.

 Olá pessoal, neste artigo veremos os conceitos e exemplos das palavras-chave Virtual e Override e veremos também sobre o modificador Sealed. Acompanhem:

 Virtual e Override – Com o uso da palavra-chave virtual (destinada a métodos, propriedades, indexadores e eventos), determinamos que um membro pode ser sobrescrito em uma classe filha. Por sua vez, usando a palavra-chave override determinamos que na classe derivada, um membro virtual da classe base pode ser sobrescrito.

 Devemos ter em mente que ambas as palavras-chave completam uma à outra. Importante salientar também que a propagação da palavra-chave virtual ocorre para descendentes. Um método virtual pode ser sobrescrito em descendentes e, ainda, em uma classe derivada.

 Veja um exemplo com o uso das palavras-chave:

public class ClasseBase

{

//Declarando um método que pode ser sobrescrito

public virtual void ExibeTexto()

{

string texto = "Texto da classe Base";

 

Console.WriteLine(texto);

}

}

public class Derivada : ClasseBase

{

//Sobrescrevendo o método da classe Base

public override void ExibeTexto()

{

base.ExibeTexto();

Console.WriteLine("\nTexto da classe Derivada");

}

}

 E no método Main:

DadosPessoa.Derivada objDerivada = new DadosPessoa.Derivada();

objDerivada.ExibeTexto();

 

Console.ReadKey();

 Veja o resultado (note que é exibido o texto da classe derivada):


 Obs: o uso do virtual em um método indica que ele pode ser sobreposto em uma classe derivada, opcionalmente. Já se declararmos um método como abstract deve, obrigatoriamente, ser sobreposto.

 Modificador Sealed – O modificador sealed (também conhecido como selado) define que uma classe não pode ser uma classe base, ou seja, não pode ter herdeiras. Uma classe sealed está pronta para uso e deve ser empregada no programa. Devido especialmente às suas características, as classes sealed podem ser consideradas o oposto das classes abstratas.

 Além das explicações mencionadas referentes às classes sealed, devemos considerar alguns outros, conforme podemos ver abaixo:

 - Os membros sealed não podem ser sobrescritos, mas devem sobrescrever um membro virtual ou virtual deduzido (por exemplo, um membro abstrato);

 - O modificador sealed deve ser combinado com a palavra-chave override. Apesar de não poder ser aplicado a membros estáticos, ele pode ser aplicado a propriedades, métodos, indexadores e eventos;

 - A Common Language Runtime (CLR) está apta a realizar otimizações nos membros sealed.

 Agora veja o exemplo a seguir, que mostra o uso do modificador sealed:

public class ClasseBase

{

public virtual void Pessoa()

{

string mensagem = "Mensagem padrão da classe Base";

 

Console.WriteLine(mensagem);

}

}

 

//Classe extensível

public sealed class ClasseDerivada : ClasseBase

{

//Sobrescrita do método

public override void Pessoa()

{

Console.WriteLine("Sobrescrita do método!");

}

}

 E no método Main:

ClasseDerivada objClasseDerivada = new ClasseDerivada();

objClasseDerivada.Pessoa();

 

Console.ReadKey();

 Veja o resultado (note que é exibido o texto da classe derivada):


 Fonte de Consulta: Apostila de C#, da Impacta Tecnologia.

 Assim finalizo o artigo. Muito obrigado a todos!

 Um abraço, e até o próximo artigo.

 Wellington Balbo de Camargo

 wellingtonbalbo@gmail.com

Artigos relacionados