Apostila fj11 - Exercício 7.7 Herança, Reescrita e Polimorfismo

3 respostas Resolvido
programaçãojava
Markoloiola

Bom dia, estou encucado com este código, não entendendo o porque que na saída só me retorna o saldo da conta corrente, sendo que as outras contas (c e cp) tbm estão sendo depositados 1000??

class Conta{
protected double saldo;

Conta(){
	
}

Conta(double saldo){
	this.saldo = saldo;
}

public double getSaldo(){
	return this.saldo;
}

public void deposita(double valor){
	this.saldo = this.saldo + saldo;
}

public void saca(double valor){
	this.saldo -= valor;
}

public void atualiza(double taxa){
	this.saldo += this.saldo * taxa;
}

}


class ContaCorrente extends Conta{

ContaCorrente(){
	
}

ContaCorrente(double saldo){
	super.saldo = saldo;
}

public void atualiza(double taxa){
	this.saldo += this.saldo * taxa * 2;
}

public void deposita(double valor){
	this.saldo += valor;
	this.saldo -= 0.10;
}

}


class ContaPoupanca extends Conta{

ContaPoupanca(){
	
}

ContaPoupanca(double saldo){
	this.saldo = saldo;
}

public void atualiza(double taxa){
	this.saldo += this.saldo * taxa * 3;
}

}


class TestaContas{
public static void main(String[] args){
	Conta c = new Conta();
	ContaCorrente cc = new ContaCorrente();
	ContaPoupanca 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());
}

}


No terminal minha saída está assim:
0.0
1019.898
0.0


Uma vez que tem deposito para c, cc e cp. Por que só em cc está calculando ?? Obs.: a saída deveria ser:

1010
1019.898
1030

para c,cc e cp, respectivamente.

3 Respostas

igorventurelli
Solucao aceita

O método deposita(double valor) da classe Conta está errado.
Você não está utilizando o parâmetro valor:

this.saldo = this.saldo + saldo;

Deveria ser:

this.saldo = this.saldo + valor; //repare na ultima variavel

Como a classe ContaPopuanca não sobrescreve esse método, ele utiliza o mesmo de Conta, então o comportamento é o mesmo (comportamento errado).

Markoloiola

[Resolvido]
Rapaz, como não percebi isso ?? Muito obrigado @igorventurelli !!

igorventurelli

hehe
Demorou!
Abs.

Criado 17 de janeiro de 2017
Ultima resposta 17 de jan. de 2017
Respostas 3
Participantes 2