Segue código:
Classe Program:
Interno f1 = new("Luciana", "Desenvolvedora", 7000.00m);
Freelancer f2 = new("Carlos", "Designer", 3500.00m);
f1.Apresentar();
f2.Apresentar();
Interface IFuncionario:
internal interface IFuncionario
{
void Apresentar();
}
Aqui achei interessante criar uma interface para que todos os funcionários implementem a mesma, assim tanto o Freelancer quanto o Interno terão o mesmo método de Apresentar().
Classei Funcionario:
internal class Funcionario(string nome, string cargo)
{
public string Nome { get; } = nome;
public string Cargo { get; } = cargo;
}
Também utilizei o construtor primário que vieram junto ao C# 12.
Classe Freelancer:
internal class Freelancer(string nome, string cargo, decimal valorProjeto) : Funcionario(nome, cargo), IFuncionario
{
public decimal ValorProjeto { get; } = valorProjeto;
public void Apresentar()
{
Console.WriteLine($"Freelancer {Nome} – Cargo: {Cargo} – Projeto atual: R$ {ValorProjeto:N2}");
}
}
Classe Interno:
internal class Interno(string nome, string cargo, decimal salario) : Funcionario(nome, cargo), IFuncionario
{
public decimal Salario { get; } = salario;
public void Apresentar()
{
Console.WriteLine($"Funcionária {Nome} – Cargo: {Cargo} – Salário: R$ {Salario:N2}");
}
}