Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Método Equals

Boa noite. No método equals eu fiz uma implementação diferente do apresentado, pois fica mais simples com apenas um IF, também usei os métodos da classe Conta (getAgencia e getNumero) para ter acesso aos dados, para não acessar diretamente (como feito no exemplo usando c.numero):

public boolean equals (Object ref){

        Conta c = (Conta) ref;

        if(this.numero == c.getNumero() && this.agencia == c.getAgencia()){            
            return true;
        }else{
            return false;
        }
    }

Porém gostaria de saber se há como ter acesso aos métodos da classe Conta sem ter que criar uma variável temporária da classe Conta para igualar com o Object recebido no parâmetro.

2 respostas

"Porém gostaria de saber se há como ter acesso aos métodos da classe Conta"

Esse cast "(Conta) ref" é necessário para forçar o compilador a entender que ali é uma conta e que os métodos que devem ser "disponibilizados" são da classe Conta.

solução

Gostaria de dar uma dica que enxugaria mais esse código:

O IF sempre recebe uma expressão lógica booleana, ou seja, uma sequência de comparações unidas por E ou OU que retornará TRUE ou FALSE. E observe na assinatura de sua função que ela retorna um boolean. Ou seja, você pode deixar a própria expressão lógica no return. Assim:

public boolean equals (Object ref){
        Conta c = (Conta) ref;
        return this.numero == c.getNumero() && this.agencia == c.getAgencia();
}

Dessa forma, se ambos os dados forem iguais (TRUE && TRUE), será retornado TRUE e, se alguma coisa for diferente (FALSE && TRUE, TRUE && FALSE, FALSE && FALSE), será retornado FALSE. Isso, além de enxugar seu código, elimina um IF desnecessário.