Olá estou iniciando o estudo em java e estou com dificuldade para reescrever o método atualiza para a subclasse ContaCorrente.
A class Conta compila normalmente.
class Conta{
//Atributos
protected double saldo;
public void atualiza(double taxa){
this.saldo += this.saldo *taxa;
}
}
Porem não estou conseguindo reescrever o método na subclass.
class ContaCorrente extends Conta{
public void atualiza(double taxa){
double aux = taxa;
this.saldo = super.atualiza(aux) * 2;
}
}
E quando compilo retorna a seguinte mensagem.
ContaCorrente.java:4: error: ‘void’ type not allowed here
this.saldo = super.atualiza(aux) * 2;
^
Se alguém poder me ajudar ficarei muito grato.
O void significa q seu método não retorna valor. Quando vc chama o super.atualiza(aux) o compilar espera por um método q retorna algum valor q possa ser multiplicado por 2, por isso ele reclama. Pra corrigir esse problema vc deve mudar o tipo d retorno dos seus métodos de void para double e retornar o saldo.
Bom dia!
Exatamente como o Andersonrms disse, seu método não tem retorno, então não é possível executar o seguinte trecho:
this.saldo = super.atualiza(aux) * 2;
Neste treco a variável “saldo” deve receber o retorno do método “atualiza” multiplicado por 2, mas como o método não retorna
nada, acusa o erro.
Você poderia alterar a assinatura do seu método para que retorne um double, assim, funcionará corretamente. O método ficaria mais ou menos assim:
public double atualiza(double taxa){
this.saldo += this.saldo *taxa;
return this.saldo;
}
poderia fazer assim também, sem mudar a assinatura do método:
class ContaCorrente extends Conta{
public void atualiza(double taxa){
super.atualiza(taxa);
this.saldo *= 2;
}
}
Muito obrigado a todos. E desculpe por minha displicência.
É lógico que nunca iria rodar.