1
resposta

[Projeto] Faça como eu fiz: relatório de funcionários

class Funcionario
{
    public virtual string GerarRelatorio()
    {
        return "Relatorio Funcionario";
    }
}

class Gerente : Funcionario
{
    public override string GerarRelatorio()
    {
        return "Relatorio Gerente";
    }
}

class Desenvolvedor : Funcionario
{
    public override string GerarRelatorio()
    {
        return "Relatorio Desenvolvedor";
    }
}

Funcionario f1 = new Gerente();
Funcionario f2 = new Desenvolvedor();

Console.WriteLine(f1.GerarRelatorio());
Console.WriteLine(f2.GerarRelatorio());
1 resposta

Oi, Eduardo! Como vai?

Agradeço por compartilhar.

Seu exemplo ficou bem direto e mostra corretamente o uso de polimorfismo em C#: mesmo as variáveis sendo do tipo Funcionario, o método executado é o das classes Gerente e Desenvolvedor, por causa do override.

Uma dica interessante para o futuro é usar uma lista de Funcionario para gerar relatórios de vários tipos de funcionários sem repetir chamadas individuais.

List<Funcionario> funcionarios = new List<Funcionario>
{
    new Gerente(),
    new Desenvolvedor()
};

foreach (Funcionario funcionario in funcionarios)
{
    Console.WriteLine(funcionario.GerarRelatorio());
}

Esse código percorre a lista e chama GerarRelatorio() para cada objeto, usando o método correto de cada classe.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!