Dois objetos na mesma arrai! tem como?

3 respostas
FabinhoGil
ola galera eu tenho uma classe mãe Conta e dessa classe tenho duas classes filhas uma é ContaCorrente e outra é ContaPoupanca as duas herdaran os metotos da classe mãe, mas alguns foran reescritos é claro!! mas agora eu criei a classe Banco nessa classe eu quero criar uma array de objeto para adicionar contas dentro dela, e um metodo que faca isso atraves de uma classe teste; ate ai td bem mas o que eu queria saber e se tem como eu abrir ContasCorrentes e ContasPoupancas nesta mesma array????? ou pelo menos no mesmo metodo olha como fika o metodo:
public void abirConta(String tipoDeConta, int numeroConta, double saldoConta, double limiteConta,
						   String nomeCliente, String sobrenomeCliente, String cpfCliente, int idadeCliente){
		if(conta[numeroConta] != null){
			System.out.println();
			System.out.println("esta conta ja existe!!!");
		}else{
			switch(tipoDeConta){
				case "cc":{
					conta[numeroConta]  = new ContaCorrente();
					System.out.print("Conta corrente "+numeroConta);
					System.out.println(" aberta com sucesso!!!");
					break;
				}
				case "cp":{
					conta[numeroConta]  = new ContaPoupanca();
					System.out.print("Conta poupança "+numeroConta);
					System.out.println(" aberta com sucesso!!!");
					break;
				}
			}
			conta[numeroConta].modifica(numeroConta, saldoConta, limiteConta, 
										nomeCliente, sobrenomeCliente, cpfCliente, idadeCliente);	
		}
	}

ate aii esta funcionando, mas eu acho que elas nao vao fikar na mesma array!!

e o maior problema e que quando eu vou testar da erroa array que abre primeiro nao funciona:
public class TestaBanco{
	public static void main(String[] args){
		Banco banco = new Banco();
		banco.conta = new ContaPoupanca[1000];
		banco.conta = new ContaCorrente[1000];
		
		banco.abirConta("cp", 0, 2500, 100,
						"Fabio", "Henrique","[CPF removido]" , 23);
	}
}

se eu quisese criar uma conta corrente daria certo mas como eu estou tentando criar uma conta poupanca nao da!!
ele ate compila mas da erro na execução
mas eu ja percebi que se eu inverter o new o colocar new ContaCorrente() primeiro..
aii inverte a situação

alguen tem alguma ideia?

3 Respostas

Rodrigo_Sasaki

Já pensou em fazer um array de Conta?Conta[] contas = new Conta[2]; contas[0] = new ContaCorrente(); contas[1] = new ContaPoupanca();

FabinhoGil

cara vlw mesmo

acho que é isso que eu precisava
:smiley:

fabiocortolan

O q vc pode fazer é utilizar polimorfismo:

Banco banco = new Banco();  

// Altere essa parte do código
banco.conta = new ContaPoupanca[1000];  
banco.conta = new ContaCorrente[1000];  

// e coloque
banco.conta = new Conta[2000];

Dessa forma qdo entrar no switch q cria o tipo de conta vc conseguirá instanciar tanto a classe ContaCorrente quanto a classe ContaPoupança sem maiores problemas.

Criado 21 de março de 2013
Ultima resposta 22 de mar. de 2013
Respostas 3
Participantes 3