Dois Construtores para a mesma classe

7 respostas
P

Oi galera. To precisando muito de uma luz :lol:
Eu tenho esses dois construtores aqui em baixo numa classe de nome Conta.

public Conta (int IDconta, int Saldoinit, String tipo, Cliente cliente)
	{
	 this.IDconta=IDconta;
	 this.Saldoinit=Saldoinit;
	 this.tipo= tipo;
	 this.clientecnt=cliente;	
	}

	public Conta (int IDconta, String tipo, Cliente cliente)	{
		this.IDconta=IDconta;
	                this.Saldoinit=0;
		this.tipo= tipo;
	                this.clientecnt=cliente;	
                }

Como repararam a diferenca é que o segundo construtor nao recebe Saldoinit como parametro, ele serve para inicializar o Saldoinit a 0 no caso de o usuario nao pôr nenhum valor qdo este lhe for pedido.

Numa outra classe tenho, eu pus o seguinte para pedir o saldoinit ao usuario:

System.out.print("Indique o saldo inicial: "); 
            int saldoinicial = LineInput.readLine();

O meu problema agora é que tenho que usar os dois construtores dependendo do valor do saldoinit digitado. Sendo que se a pessoa nao poem nenhum valor como saldo inicial, o construtor que tenho que chamar é o segundo. Se a pessoa poe um valor ao saldo entao tenho que chamar o primeiro construtor que recebe o saldoinit como parametro. Alguem que me possa ajudar? :mrgreen:
Obrigado. :thumbup:

7 Respostas

Zakim

Colega… Isso é resolvido programaticamente

Pergunte ao usuario a partir de um JOptionPane, antes dele criar a conta, se ele deseja colocar um saldo inicial

se o usuário resonder que sim, então inicia o construtor que tem o parametro saldo init, caso contrario inicia com o construtor que atribui saldo =0

tudo no if else… :stuck_out_tongue:

peczenyj

Outra sugestão:

class X{ public X(int a, int b int c) { this(a,b,c,0);} public X(int a, int b int c, ind d){ this.a = a; ...} }

luistiagos

simples:

int saldoInicial = 0;
 saldoInicial = input.readline();
 
 if(saldoInicial == 0) {
   // segundo construtor
 }
 else {
  //primeiro construtor
 }
luistiagos

outra coisa… saldoInicial como int???
não seria melhor um double? seu saldo é sempre inteiro?

peczenyj

Se o salto inicial é zero ou não qual a diferença entre usar um construtor ou outro??

sergiotaborda

Primeiro escreva os construtores de forma mais compreensivel

// construtor real
public Conta (int IDconta,  String tipo, Cliente cliente,int Saldoinit){
	 this.IDconta=IDconta;
	 this.Saldoinit=Saldoinit;
	 this.tipo= tipo;
	 this.clientecnt=cliente;	
	}
// construtor utilitário
	public Conta (int IDconta, String tipo, Cliente cliente)	{
		this(IDconta,tipo,cliente,0);
        }

Errado. Vc só usa um construtor porque o saldo sempre será digitado.

Zakim

isso ta com cara de ser tarefa de casa… hehehee…

ja me deparei com isso na faculdade. E o pior é que eu era obrigado a utlizar os dois construtores… :roll:

Criado 5 de março de 2008
Ultima resposta 5 de mar. de 2008
Respostas 7
Participantes 5