Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Classe e metodos abstratos

Ola pessoal!

Quando eu tenho uma classe abstrata herdando de outra classe abstrata como, por exemplo:

public abstract class Funcionario {

        protected String nome;
        protected String cpf;
        protected double salario;

        public abstract double getBonificacao() {
        }

    public String setNome(String nome){
    this.nome = nome;
    }   

}

e

public abstract class Secretaria extends Funcionario {
}

Os metodos abstratos da superclasse (Funcionario) não precisam ser implementados novamente na classe Secretária né?

E se eu tiver uma classe Programador herdando da classe Funcionario, ele não precisa obrigatoriamente ter o metodo setNome pois somente metodos abstratos das superclasses obrigam às suas classes filhas à implementar estes tipos de metodos, seria isso?

3 respostas
solução!

Oi John!

Sobre a obrigatoriedade é exatamente isso. Se uma classe abstrata estende uma outra classe abstrata, essa classe não é obrigada a implementar os métodos abstratos.

Um ponto é que sempre que herdamos de uma classe, tudo que existe nela é herdado junto, não tem como escolher o que vai ser herdado ou não.

Perceba que o método setNome() não é abstrato. Isso significa que no cenário da classe Programador herdar da classe Funcionario, independente de Programador ser abstrata ou não, a herança do método vai acontecer.

Faz sentido? Se ficar alguma dúvida vai avisando aqui, tá bem?

Abraço.

Ola Lucas!

Perfeito! Entendi o que vc quis dizer. Mas gostaria de confirmar com relação aos metodos:

metodos abstratos da superclasse abstrata se tornam obrigatórios a sua implementação nas classes filhas

metodos não abstratos da superclasse abstrata não se tornam obrigatórios a sua implementação nas classes filhas

metodos não abstratos da superclasse abstrata podem ser sobreescritas na implementação nas classes filhas

Seria isso o caso?

Obrigado!!

Oi John! É exatamente isso! :)