Imprimir um objeto de uma classe no vetor

[code]import java.util.Scanner;

public class executaVenda{
public static void main(String args[]){
int opcao=0;
int tipo_cliente=0;
ClientePF cpfi[] = new ClientePF[3];
ClientePJ cpju[] = new ClientePJ[3];
Utilitario util = new Utilitario();
Scanner entrada = new Scanner(System.in);
int i=0;

 while(i<3){
     System.out.println("\n\n");
     System.out.println("Cadastro do cliente "+(i+1));		
	 cpfi[i] = new ClientePF(util.entradaString("Nome: "),util.entradaString("CEP: "),util.entradaString("Cidade: "),util.entradaString("Estado: "),util.entradaString("CPF: "),0);
     i++;	
 }
 System.out.println("Informe o codigo do cliente: ");
 i=entrada.nextInt();
 System.out.println(cpfi[i]);
 }

}[/code]

Quando vc faz isso System.out.println(cpfi[i]); vc esta chamando o método toString da classe ClientePF, vai imprimir o nome da classe @ e um código da tabela hash.

Vc pode fazer o seguinte:

  1. fazer um método que imprime o seu objeto e chamar ele System.out.println(cpfi[i].imprime());

  2. sobrescrever o método toString de ClientePF para imprimir seus campos.

Flw

Corrigindo… como o julianofischer, devemos sobrescrever o método to string, não sobrecarregar como eu disse.

O correto é a sobrescrita do método toString, ou seja, reescrever o método.
Lembrando que na sobrescrita o novo método deve possuir a mesma assinatura (retorno, nome do método, tipo e qtdd de parâmetros) do antigo método!

Para finalizar…temos as seguintes regras para sobrescrever um método:

  1. lista de argumentos deve ser a mesma

  2. retorno deve ser o mesmo

3)nivel de acesso não pode ser mais restrito, mas pode ser menos

4)pode lançar qualquer exceção não verificada

5)não pode ser final nem static

Exemplos

//se eu tenho o método 
public void eat(){}

//inválidos

private void eat(){}

public void eat()throw IoException{}

public void eat(int x){}

public int eat(){}

Bem gente e isso…flw