1
resposta

Dúvida sobre classe e métodos Abastratos

Eu entendi que um método Abstrato é obrigado a ser implementado na classe concreta que herda da classe abstrata pai. Exemplo:

 public abstract class Funcionario
 {
    ...
    public abstract void AumentarSalario();

    public abstract double GetBonificacao();
}

Classes concrecas que herdam de Funcionario() são obrigados implementar AumentarSalario() e GeBonificacao()?

Não entendi porquê na solução abaixo não foi obrigado a implementar o método GetBonificacao() da abstract PrestadorServicos em Arquiteto?

   public interface IAutenticavel
    {
        bool Autenticar(string senha);
    }

    public interface IBonificavel
    {
        double GetBonificacao();
    }

    public abstract class PrestadorDeServicos : IBonificavel
    {
        public string CNPJ { get; set; }
        public double GetBonificacao()
        {
            return 1000;
        }
    }
    public class Arquiteto : PrestadorDeServicos, IAutenticavel
    {
        public string Senha { get; set; }

        public bool Autenticar(string senha)
        {
            return Senha == senha;
        }
    }

Obrigado

1 resposta

As Classes concretas que herdam de Funcionario são obrigadas a implementar AumentarSalario() e GeBonificacao(), pois estes métodos são abstratos na Classe em questão.

Observe que o método GetBonificacao() da Classe PrestadorDeServicos não é abstrato (a classe é abstrata, mas o método não), desta maneira, as Classes que herdam de PrestadorDeServicos não são obrigadas a implementarem esse método.