Boa tarde.
Não entendi a explicação da atividade, e ao escrever o exemplo e chamar ambos os métodos para Diretor e Funcionário, o resultado foi 1.
Pelo que entendi, quando temos um método em uma classe base e o mesmo método em uma classe derivada, sem as palavras virtual e override, o método da classe DERIVADA é ignorado e o método executado é o da classe BASE. Então utilizamos override/virtual quando quisermos sobrescrever o método da classe BASE e executar o método da classe DERIVADA.
A explicação da atividade em questão "Repetição de membros" explicou como se fosse o contrário, mas o teste do código no visual studio provou que meu entendimento estaria correto.
Alguém pode por favor me ajudara esclarecer?
Muito obrigado.
public class Funcionario
{
public string Nome { get; set; }
public string CPF { get; set; }
public double Salario { get; set; }
public virtual double GetBonificacao()
{
return Salario * 0.10;
}
public double CalcularTaxaAdministrativa()
{
return 1;
}
}
` public class Diretor : Funcionario
{
public override double GetBonificacao()
{
return Salario + base.GetBonificacao();
}
public double CalcularTaxaAdministrativa()
{
return 0;
}
}`
` static void Main(string[] args)
{
GerenciadorBonificacao gerenciador = new GerenciadorBonificacao();
Funcionario daniel = new Funcionario();
daniel.Nome = "Daniel";
daniel.CPF = "123.123.123.23";
daniel.Salario = 10000;
gerenciador.Registrar(daniel);
Console.WriteLine(daniel.GetBonificacao());
Funcionario nath = new Diretor();
nath.Nome = "Nath";
nath.CPF = "123.123.123.23";
nath.Salario = 20000;
gerenciador.Registrar(nath);
Console.WriteLine(nath.GetBonificacao());
Console.WriteLine(gerenciador.GetTotalBonificacao());
Console.WriteLine("Diretor " + nath.CalcularTaxaAdministrativa()); // RETORNANDO 1
Console.WriteLine("Funcionário " + daniel.CalcularTaxaAdministrativa()); // RETORNANDO 1
}`