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]);
}
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:
fazer um método que imprime o seu objeto e chamar ele System.out.println(cpfi[i].imprime());
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:
lista de argumentos deve ser a mesma
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(){}