Pessoal, boa noite.
Por favor, preciso tirar uma dúvida.
Vejam as classes abaixo. Porque será que no momento que faço o "print" da conta o saldo que é retornado é o da classe conta e não da classe ContaPoupança?
Acontece o seguinte, ao executar a Classe TestaOrdenacao é retornado 0 (zero) no valor do Saldo e não o valor atribuído para cada conta.
O que estou fazendo de errado?
package br.com.empresa.banco.conta;
public abstract class Conta {
private double saldo;
private String nome;
private int agencia;
private int numero;
/**
*
* @param x Valor que será depositado
* @throws ValorInvalidoExpetion Erro retornado caso valor depositado seja inválido
*/
public Conta(int n, String texto){
this.numero = n;
this.nome = texto;
}
public void deposita(double x) throws ValorInvalidoExpetion {
if(x <0){
throw new ValorInvalidoExpetion();
}else{
this.saldo+=x;
}
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getAgencia() {
return agencia;
}
public void setAgencia(int agencia) {
this.agencia = agencia;
}
public double getSaldo() {
return saldo;
}
public void imprime() {
System.out.println(nome);
System.out.println(agencia);
System.out.println(saldo);
}
public void saca(double valor) {
this.saldo -= valor;
}
public abstract void atualiza(double taxa);
public void setSaldo(double saldo) {
this.saldo = saldo;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "esse objeto é uma conta com saldo R$" + this.saldo;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
Conta outra = (Conta) obj;
return this.numero == outra.numero && this.nome.equals(outra.nome);
}
public void setNumero(int n){
this.numero = n;
}
public int getNumero(){
return this.numero;
}
}
package br.com.empresa.banco.conta;
public class ContaPoupanca extends Conta implements Comparable<ContaPoupanca> {
public ContaPoupanca(int n, String texto) {
super(n, texto);
// TODO Auto-generated constructor stub
}
private double saldo;
public void atualiza(double taxa) {
this.saldo += this.saldo * taxa;
}
public void deposita(double valor) {
this.saldo += valor - 0.10;
}
public int compareTo(ContaPoupanca outra){
if (this.saldo < outra.saldo){
return -1;
}
if (this.saldo > outra.saldo){
return 1;
}
return 0;
}
}
package br.com.empresa.banco;
import java.util.LinkedList;
import java.util.List;
import br.com.empresa.banco.conta.ContaPoupanca;
public class TestaOrdenacao {
public static void main(String[] args) {
// TODO Auto-generated method stub
// List<ContaPoupanca> contas = new ArrayList<ContaPoupanca>();
List<ContaPoupanca> contas = new LinkedList<>();
ContaPoupanca c1 = new ContaPoupanca(400, "Caio");
c1.deposita(1500.0);
contas.add(c1);
ContaPoupanca c2 = new ContaPoupanca(467, "Adriano");
c2.deposita(2050.99);
contas.add(c2);
ContaPoupanca c3 = new ContaPoupanca(230, "Victor");
c3.deposita(1070.0);
contas.add(c3);
for (ContaPoupanca conta : contas) {
System.out.println(conta);
}
}
}