1
resposta

Comportamento da palavra 'base'

Fala Gui, tudo bem?

No vídeo que você fala sobre a palavra reservada base você chega a utilizar este código:

public override double GetBonificacao()
{
    return Salario + base.GetBonificacao();
}

E ele puxa a função GetBonificacao da classe base, como é de se esperar. Mas... Será que era de se esperar esse comportamento? Porque... Se eu usei override, significa que eu quero que este método da classe filha de fato seja executado ao invés do método base, não? Quando você instanciou um Diretor e atribuiu a referência dele em duas variáveis diferentes (uma do tipo Funcionario e outra do tipo Diretor), independentemente do tipo de referência, o GetBonificacao sempre era chamado da classe Diretor (já que você deu override nela, certo?) Então... Honestamente, eu acho que esse código deveria ter dado estouro de pilha, não deveria? Por que quando a referência é da classe base o override funciona, mas quando eu chamo ele com a palvara base o método fica acessível? A palavra reservada new nesse caso não faria mais sentido, visto que ela só esconderia o método base, mas não o impossibilitaria o uso?

Obrigado e parabéns pelo conteúdo, estou aprendendo muito contigo!

1 resposta

Na verdade acredito que nesse codigo ele queria executar o codigo da classe base + o seu codigo