Como retornar o saldo das classes ContaCorrente e Poupanca

Olá… em um exercicio que trouxe pra fazer em casa, preciso implementar um metodo que me retorna na classe Teste, o saldo de duas contas, uma conta corrente e conta poupanca, implementei em uma classe separada, com o nome CalculoValorEmContas, mas ao chama-lo na classe Teste, não esta retornando o valor do saldo das duas contas. o que estou fazendo de errado ?

a classe banco :

public class Banco {
	private String nome;
	private int numero ;
	/**
	 * @param nome
	 * @param numero
	 */
	public Banco(String nome, int numero) {
		this.nome = nome;
		this.numero = numero;
	}
	/**
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}
	/**
	 * @param nome the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}
	/**
	 * @return the numero
	 */
	public int getNumero() {
		return numero;
	}
	/**
	 * @param numero the numero to set
	 */
	public void setNumero(int num) {
		numero = num ;
	}
	
	public void imprimeDados() {
		System.out.println("Nome do Banco: " + nome + "\tNumero do banco: "+numero);
		
	}
}	

a classe agencia

/**
 * 
 */

/**
 * @author admin
 *
 */
public class Agencia {

	
	private String numero;
	private Banco banco;
	/**
	 * @param numero
	 * @param banco
	 */
	public Agencia(String num, Banco bc) {
	
		numero = num;
		banco = bc;
	}
	
	/**
	 * @return the banco
	 */
	public Banco getBanco() {
		return banco;
	}
	
	/**
	 * @return the numero agencia
	 */
	public String getNumero() {
		return numero;
	}
	

	/**
	 * @param banco the banco to set
	 */
	public void setBanco(Banco b) {
		banco = b;
		}
	
	/**
	 * @param numero the numero to set
	 */
	public void setNumero(String num) {
		numero = num;
				
	}
	// imprime todos os bancos da classe 
	public void imprimeDados() {
		System.out.println("Numero Agencia : " +numero);
		banco.imprimeDados();

	}
}

a classe conta:

public class Conta {

	protected double saldo ;
	private String numero;
	private Cliente titular;
	private Agencia agencia;
	private double acumuladorIFN;
	private static double taxaIFN = 0.038;
	private double limite;
	

	
	
	public Conta(double saldoInicial, String num, Cliente tit, Agencia ag) {
		saldo = saldoInicial;
		numero = num;
		titular = tit;
		agencia = ag;
	}
	
	
	
	public Conta(String num, Cliente tit, Agencia ag) {
		this(0, num, tit, ag);
		
	}
	
	public void saque(double valor) {
		imprimeSaldoAnterior();	
		System.out.println("AGUARDE.. PROCESSANDO");
		System.out.println("Solicitado saque valor de R$ "+valor + " conta " +numero);
		if ( valor > 0) {
			if (saldo >= valor) {
				saldo -= valor;
				acumularIFN(valor);
			} else 
				System.out.println("Saldo Disponivel para movimentação é R$ "+ (this.saldo -= valor));
			
									
									
				
		} else {
			System.out.println("o valor do saque deve ser positivo");
				
		}
	}
	
	public void valorDoSaqueEfetuado (){
		import javax.swing.plaf.SliderUI;

/*
*    adicionar o atributo data aniversario a clase pou como string e encapsular
*	criar construtor classe poupanca passando parametro data de anive e demais
*	override dos metodos imprime dados , imprimir tmb data de aniversario e tipo de 
*	conta no cabecalho
*
*/

a classe contaEspecial :


import java.io.ObjectInputStream.GetField;


public class ContaEspecial extends Conta {


	private double limite;
	
	public ContaEspecial(double saldoInicial, String num, Cliente tit,	Agencia ag, double limite) {
		super(saldoInicial, num, tit, ag);
		this.limite = limite;
		
	}

	public double getLimite (){
		return limite;
		
	}
	
	public void setLimite(double limite) {
		this.limite = limite;
	}

	public ContaEspecial (String num, Cliente tit, Agencia ag, double limite){
		this(0.0, num, tit, ag, limite);   // chama construtor acima e dps da classe mae
	}
	
	public void imprimeDados() {
		super.imprimeDados(); // passa a instancia correte para baixo
		System.out.println(this);
		
	}
	
	public String toString() {
		return " ## Limite Conta Especial ## : " +limite;
	

	}
	

	public void saque (double valor) {
		
		System.out.println("Solicitado saque valor de R$ "+valor);
		if ( valor > 0) {
			if (saldo + limite >= valor ) {     // saldo tem q estar protected
				saldo -=valor;
				acumularIFN(valor);

			} else {
				System.out.println("saldo Insuficiente");
			}
		} else {
				System.out.println("Valor Invalido");
	}
}
	
	public double getValorEmContas() {
		return getSaldo();

	}
}

a classe contaPoupanca :

import javax.swing.plaf.SliderUI;

/*
*    adicionar o atributo data aniversario a clase pou como string e encapsular
*	criar construtor classe poupanca passando parametro data de anive e demais
*	override dos metodos imprime dados , imprimir tmb data de aniversario e tipo de 
*	conta no cabecalho
*
*/
public class ContaPoupanca extends Conta{
	
	private String dataAniversario ;
	private double limite;
	
	public ContaPoupanca (double saldoInicial, String num, Cliente tit, Agencia ag, String dataAniversario) {
		super(saldoInicial, num, tit, ag);
		this.dataAniversario = dataAniversario ;
			
	}
	
	public ContaPoupanca (String num, Cliente tit, Agencia ag, String dataAniversario) {
		this(0.0, num, tit, ag, dataAniversario);
	}

	/**
	 * @return the dataAniversario
	 */
	public String getDataAniversario() {
		return dataAniversario;
	}
	
	public void setDataAniversario(String dataAniversario) {
		super.imprimeDados();
		System.out.println("Conta poupanca data aniversario é: " +dataAniversario);
	}
	
	public void imprimeSaldo(){
		super.imprimeSaldo();
		System.out.println(this);
		
	}
	
	public void imprimeDados(){
		super.imprimeDados();
		System.out.println(this);		 // passa instancia corrente para to abaixao
	}

	public String toString() {
		return "-------- Conta poupanca : data aniversário : dia"+ dataAniversario;
				
	}
	
	public double getValorEmContas() {
		return getSaldo();

	}
	

}

a classe cliente:

public class Cliente {
	
	private String nome;
	private String cpf;
	/**
	 * @param nome
	 * @param cpf
	 */
	public Cliente(String nome, String cpf) {
	
		this.setCpf(cpf);
		this.setNome(nome);
		
	}
	
	/**
	 * @return the cpf
	 */
	public String getCpf() {
		return this.cpf;
	}
	
	/**
	 * @return the nome
	 */
	public String getNome() {
		return this.nome;
		
	}
	
	/**
	 * @param cpf the cpf to set
	 */
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	
	/**
	 * @param nome the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public void imprimeDados() {
		
	//	System.out.println("==================================");
		System.out.println("Nome do Cliente: " +this.getNome());
		System.out.println("CPF: " +this.getCpf());
	//	System.out.println("==================================");
	}
}

a classe calculoValorEmConta


public class CalculoValorEmContas {
	
	private double totalValorEmContas ;
	
	public void acumulaValorEmContas(Conta conta) {
		totalValorEmContas += conta.getSaldo();
				
	}
	
	
	public void imprimeValorEmContas() {
		
		System.out.println("\ntotal de valor em contas é " + totalValorEmContas );
	}

}

e por úiltimo, a classe Teste


/*
 *  alterar metodo main para criar 2 contas especiais e 1 poupanca
 *  realizar saque na 1a. conta especial, valor execer o saldo mas nao ultrapassar o limite
 *  realiuar saque na 2a. conta especial, valor ultraasse o saldo e limite
 *  realizar saque na poup. para exceder o saldo
 *  imprimir os dados.
 *
 */
 
public class TestaHeranca {

	public static void main(String[] args) {
		Banco banco = new Banco("Banco do Brasil", 250);
		Agencia ag1 = new Agencia("001", banco);
		Agencia ag2 = new Agencia("002", banco);		
		Agencia ag3 = new Agencia("003", banco);
		Agencia ag4 = new Agencia("004", banco);
		
		Cliente cliente0 = new Cliente("Conta Cliente Poupanca",   "000.000.000-00");
		Cliente cliente1 = new Cliente("Marcelo Paulo",   "887.457.325-47");
		Cliente cliente2 = new Cliente("Patricia Cinti",  "145.875.626-17");
		Cliente cliente3 = new Cliente("Adelina Rebello", "560.485.861-57");
		
		Conta conta = new Conta(500, "00.1452.20", cliente0, ag1);

		

		System.out.println();

		
		Conta contaEspecial1 = new Conta(5000, "14.956-6", cliente1, ag2);
		contaEspecial1.saque(8000);
		contaEspecial1.imprimeDados();
		System.out.println();

	
		Conta contaEspecial2 = new Conta(20000, "17.952-7", cliente2, ag4);
		contaEspecial2.imprimeSaldoAnterior();
		contaEspecial2.saque(38000);
		contaEspecial2.imprimeDados();
		contaEspecial2.imprimeSaldo();
		System.out.println();
		
		
		ContaEspecial contaEsp2 = null;
		contaEsp2 = new ContaEspecial(10000, "17.952-7", cliente2, ag4, 20000);
		contaEsp2.imprimeSaldoAnterior();
		contaEsp2.saque(42000);
		contaEsp2.valorDoSaqueEfetuado();
		contaEsp2.imprimeDados();
		contaEsp2.imprimeSaldo();
		
		
		System.out.println();
		

		ContaPoupanca contaPoup = null;
		contaPoup = new ContaPoupanca(20000, "00033-0", cliente2, ag3, " 14");
		contaPoup.imprimeDados();
		contaPoup.saque(8000);
		contaPoup.imprimeSaldo();
		contaPoup.deposito(12500);
		contaPoup.imprimeSaldoAnterior();
		
		
		CalculoValorEmContas calcular = new CalculoValorEmContas();
		
		calcular.imprimeValorEmContas();
		
		
	}
}

e esta é a saida do metodo imprimeValorEmContas

total de valor em contas é 0.0

Você não está dizendo qual conta deve calcular.

CalculoValorEmContas calcular = new CalculoValorEmContas();  
          
calcular.imprimeValorEmContas();  

Acho que tem que acumular primeiro:

CalculoValorEmContas calcular = new CalculoValorEmContas();  
calcular.acumulaValorEmContas(conta);
calcular.imprimeValorEmContas();  

obrigado… era isso mesmo !!! valeu novamente a comunidade GUJ !!!

Oi marcelo-rebello a dica do lucasportela está correta sobre acumular, aproveitei e fiz um projeto do eclipse que está funcionando, se quiser dá uma olhada , segue em anexo.

obrigado novamente… vou verificar também como você fez…