pra que serve esse base ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!