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

Herança de Equals e HashCode

Criei uma Classe chamada Pessoas, que é implementada pela Classe Funcionarios. A Classe Pessoas, possui como atributos: String nome e int idade. Enquanto a Classe funcionarios, possui: String especialidade.

No final da aula 7, de Equals e HashCode, o Paulo ensinou a implementar o Equals e o HashCode automaticamente, pelo Eclipse, através do Ctrl + 3. No entanto, quando eu tento implementar o Equals e HashCode, na classe funcionário, que herda de Pessoas, eles ficam incompletos, pois o método Equals, só vai considerar a especialidade e de maneira similar, quando implementado acima, em Pessoas, eles só implementaram o nome e idade. Como faço para solucionar esse problema e implementar todos os atributos da herdados e da classe Funcionarios?

2 respostas
solução!

Oi Fernando,

Na sua classe Pessoa, você tem o equals? Se sim, o Eclipse deve gerar uma linha parecida com

if (!super.equals(obj))
    return false;

dentro do equals de Funcionario. Esse super.equals() é justamente o equals de Pessoa, onde já se faz a comparação dos atributos herdados.

Perfeito! Funcionou. Não imaginei que o Eclipse fosse ser tão inteligente ao ponto de considerar os outro atributos. Muito obrigado!

@Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (!super.equals(obj))
            return false;
        if (getClass() != obj.getClass())
            return false;
        Pacientes other = (Pacientes) obj;
        if (doencas == null) {
            if (other.doencas != null)
                return false;
        } else if (!doencas.equals(other.doencas))
            return false;
        return true;
    }