pra que serve esse base ?
pra que serve esse base ?
Oi Arthur, tudo bem?
Só uma dúvida. Você está se referindo a palavra-chave base, utilizada no contexto de herança?
Abraço.
Isso mesmo
Arthur, uma das utilidades da palavra-chave base
serve para você chamar um método na classe Pai que foi substituído (sobrescrito) na classe Filha. Nesse caso, você utiliza a variável base
para indicar que está se referindo ao método da classe Pai, e não ao que você substituiu na Filha. Um exemplo:
class Pessoa
{
public virtual void ola()
{
Console.WriteLine("Sou uma pessoa");
}
}
class Funcionario : Pessoa
{
public override void ola()
{
// base.ola() chama o método ola() em Pessoa, e não o de Funcionario
// base.ola() faz com que imprima "Sou uma pessoa"
base.ola();
Console.WriteLine("Sou um funcionário");
}
}
Funcionario f = new Funcionario();
f.ola();
// Saída:
// Sou uma pessoa
// Sou um funcionário
Faz sentido? Se a dúvida persistir, continuamos a conversa. :)
Então com a palavra chave base antes do método estou forçando o C# a executar o método do pai na instancia filha da classe pai? Isso anula a sobrecarga (método pai como virtual) prescrita na classe pai mesmo colocando o "override" na filha?
Oi, Samuel, tudo bem?
Não sei se eu usaria o termo anular. Mas a partir do momento que você sobrescreve o método, quando você for se referenciar aquele método, será chamado o sobrescrito da classe filha.
A palavra-chave base
é uma forma de indicarmos dentro da classe filha que queremos chamar o método da classes pai. Existem alguns momentos que isso será necessário. Um deles é quando você quer executar o mesmo que o método da classe pai, mais alguma outra coisa dentro do método sobrescrito.
Foi isso que ocorreu no exemplo que dei. Com a chamada base.ola()
, eu digo explicitamente que quero executar o método da classe pai. Essa chamada também é válida em construtores, quando eu quero executar um construtor da classe pai. E com variáveis de instância também.
Faz sentido? Um abraço!