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

Dúvida no Ex. 10 da Aula 5 - Exceções e controle de erros - Método deposita sobreescrito

Boa tarde!!

Na minha classe Conta, a qual possui duas filhas: ContaCorrente e ContaPoupanca, eu fiz a validação para lançar exceção quando o valor do método deposita fosse <= 0.

classe Conta{
    //Atributos e métodos.

    //Método deposita.
    public void deposita(double valor){
        if (valor > 0){
            this.saldo += valor;
        }
        else{
            throw new ValorInvalidoException("Valor não permidito para depósito:");
        }
    }
}

Porém, a classe ContaPoupanca sobrescreve o método deposita de Conta e acabei fazendo o mesmo tratamento nela, repetindo código:

class ContaPoupanca extends Conta{
    //Atributos e métodos.

    public void deposita(double valor) {
        if (valor < 0) {
            throw new ValorInvalidoException("Você tentou depositar um valor negativo: "+valor);
        } else {
            this.saldo += valor - 0.10;
        }
    }
}

Há uma forma melhor de fazer isso?

Obrigado!!

2 respostas
solução!

Você pode deixar a validação somente na classe Conta.java. Ao invés de repetir o código de validação, chame o método deposita da superclasse fazendo uso do operador super:

classe Conta{
    //Atributos e métodos.

    //Método deposita.
    public void deposita(double valor){
        if (valor < 0){
            throw new ValorInvalidoException("Valor não permidito para depósito:");
        }
        this.saldo += valor;
    }
}

class ContaPoupanca extends Conta{
    //Atributos e métodos.

    public void deposita(double valor) {
        super.deposita(valor - 0.10);
    }
}

Era isso que você queria?

Exato!!