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

Erro no Casting

Pessoal, surgiu uma dúvida. No curso anterior o instrutor ensina a usar classes abstratas, logo eu passei a aplicar tais conhecimentos usando-o na classe Conta por exemplo, já nesse curso que estou fazendo agora o instrutor regrediu e passou a usar tal classe como não abstrata fazendo casting dela para sobrescrever o método equals. A questão é, como faço para sobrescrever tal método usando as classes ContaCorrente e ContaPoupanca ?

Segue o que tentei fazer fazer.

    @Override
    public boolean equals(Object object) {
        ContaCorrente corrente = (ContaCorrente) object;
        ContaPoupanca poupanca = (ContaPoupanca) object;

        if (this.saldo == poupanca.saldo || this.saldo == corrente.saldo) {
            return true;
        } else {
            return false;
        }
    }

Porém, retornou uma Exception ClassCastException.

Teste feito na classe main.

        ContaCorrente contaCorrente = new ContaCorrente(500.0);

        ContaPoupanca contaPoupanca = new ContaPoupanca(500);

        if (contaCorrente.equals(contaPoupanca)) {
            System.out.println("Conta iguais!");
        } else {
            System.out.println("Conta diferentes!");
        }
1 resposta
solução!

Ok, eu estava tentando fazer algo quase impossível. Já resolvi, acho que o certo era sobrescrever o método equals em cada classe (ContaPoupanca e ContaCorrente);

    @Override
    public boolean equals(Object object) {
        ContaPoupanca poupanca = (ContaPoupanca) object;
        if (this.saldo == poupanca.saldo) {
            return true;
        } else {
            return false;
        }
    }
    @Override
    public boolean equals(Object object) {
        ContaCorrente corrente = (ContaCorrente) object;
        if (this.saldo == corrente.saldo) {
            return true;
        } else {
            return false;
        }
    }