Exercício 5: Existe outra maneira de a classe ContaPoupanca compilar se você não reescrever o método abstrato?
Resposta: Se transformarmos a classe ContaCorrente em abstrata, ela volta a compilar, já que a responsabilidade de implementar o método é repassada para seus filhos.
A dúvida é a seguinte seria transformar a classe ContaCorrente em abstrata ou a classe ContaPoupanca, pois no meu caso fiz o que foi dito na resposta e mesmo assim a classe CP exigiu a implementação do método atualiza()?
Segue meu código:
//Classe Conta
package fj11;
public abstract class Conta {
protected double saldo;
public double getSaldo() {
return this.saldo;
}
public boolean saca(double valor) {
if (this.saldo >= valor) {
this.saldo -= valor;
return true;
} else {
// saldo insuficiente
return false;
}
}
public abstract void deposita(double valor);
public abstract void atualiza(double taxa);
}
//Classe ContaCorrente
package fj11;
public class ContaCorrente extends Conta {
@Override
public void atualiza(double taxa) {
this.saldo += this.saldo * taxa * 2;
}
@Override
public void deposita(double valor) {
if (valor > 0) {
this.saldo += valor;
}
}
}
//Classe ContaPoupanca com o método atualiza() comentado
package fj11;
public class ContaPoupanca extends Conta {
@Override
public void atualiza(double taxa) {
this.saldo += this.saldo * taxa * 3;
}
@Override
public void deposita(double valor) {
if (valor > 0) {
this.saldo += valor - 0.10;
}
}
}