Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Violação de encapsulamento?

Olá, em relação ao seguinte método equals(), fiquei com uma dúvida. Pode-se ver que ele recebe um objeto do tipo Conta como parâmetro e faz o casting para a variável "outra" (claro, se fosse um objeto não herado de Conta, certamente daria CastingException :> ).

public abstract class Conta {

    @Override
    public boolean equals(Object ref) {

        Conta outra = (Conta) ref;

        if (this.agencia != outra.agencia) {
            return false;
        }

        if (this.numero != outra.numero) {
            return false;
        }

        return true;
    }

}

Mas aí entra a questão... a chamada direta do atributo "outra.agencia" e "outra.numero" não viola o encapsulamento privado dessas variáveis na classe-filha? Sendo esses atributos privados e herados da classe-mãe (Conta) para as classes filhas (ContaCorrente ou ContaPoupanca), utilizar o polimorfismo num método da classe Conta para acessar esses atributos diretamente não é uma violação do encapsulamento privado desses objetos? Não seria mais correto utilizar o método público ( outra.getAgencia() ou outra.getNumero() ) ?

1 resposta
solução!

Olá Samuel,

Sim, utilizamos métodos getters e setters para não acessar atributos diretamente. Porém, para reescrever o método equals precisamos dar referência no objeto(nome) que estamos recebendo e então realizar a comparação e isso deve ser feito na classe da entidade(Classe que você está chamando no testar).

Espero ter lhe ajudado.