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() ) ?