Erro ao compilar programa[resolvido]

3 respostas
F
class Conta{
	protected double saldo;
	
	void deposita(double valor){
		this.saldo += valor;
	}
	
	void saca(double valor){
		this.saldo -= valor;
	}
	
	double getSaldo(){
		return this.saldo;
	}
	
	void atualiza(double taxa){
		this.saldo += this.saldo * taxa;
	}
}

class ContaCorrente extends Conta{
	void atualiza(double taxa){
		this.saldo += (super.atualiza(taxa)) * 2;
	}
	
	void deposita(double valor){
		this.saldo += valor - 0.10;
	}
}

class ContaPoupanca extends Conta{
	void atualiza(double taxa){
		this.saldo += (super.atualiza(taxa)) * 3;
	}
}

class TestaContas{
	public static void main(String[] args){
		Conta c = new Conta();
		Conta cc = new ContaCorrente();
		Conta cp = new ContaPoupanca();
		
		/*c.deposita(1000);
		cc.deposita(1000);
		cp.deposita(1000);
		
		c.atualiza(0.01);
		cc.atualiza(0.01);
		cp.atualiza(0.01);*/
		
		System.out.println(c.getSaldo());
		System.out.println(cc.getSaldo());
		System.out.println(cp.getSaldo());
	}
}

Galera tenho este programa que faz parte do exercicio da apostila da caelum, porem ao tentar executar ocorre o seguinte erro:

C:\Fabio Java>javac TestaContas.java
TestaContas.java:23: 'void' type not allowed here
this.saldo += (super.atualiza(taxa)) * 2;
^
TestaContas.java:33: 'void' type not allowed here
this.saldo += (super.atualiza(taxa)) * 3;
^
2 errors

alguem poderia me informar o que está errado? Obrigado

3 Respostas

F

Fala fabioigor,

Repare o seguinte:

aqui…

this.saldo += (super.atualiza(taxa)) * 2;

e aqui…

this.saldo += (super.atualiza(taxa)) * 3;

Você está tentando fazer operações de multiplicação com o retorno do método atualiza, que neste caso é ‘void’… e além disso, você está tentando armazenar isso no atributo saldo que é double… o compilador não permite isso…

O que você precisa é invocar o método ‘atualiza’ e depois realizar a operação com o novo valor de ‘saldo’.

Abraço e bons estudos!

F

Brother desculpe, porem não entendi por que está errado. Estou na parte de Herança e poliformismo da caelum estou invocando o metodo da super classe para setar o valor do saldo e multiplicar por 3, como eu deveria fazer o que está errado?

F

Resolvi o problema, meu codigo estava certo. Minha classe na pasata raiz que estava com nome errado exclui a classe e recompilei codigo que funcionou normalmente
Obrigado a todos pela ajuda
t+

Criado 8 de setembro de 2011
Ultima resposta 8 de set. de 2011
Respostas 3
Participantes 2