Consulta não retorna todos os dados [Resolvido]

Ola amigos estou com problema tenho uma consulta que carrega somente a herança mais a parte que pega a tabela contato que esta ligada a classe pessoa não carrega seus dados.
Quando faço a consulta ela só pega os dados da classe pai e a filho mas da classe Contato que esta ligado a classe pessoa não retorna. como resolvo isso? olha o código.

public class Pessoa {

private int id_pessoa;
private String cep;
private String logradouro;
private String numero;
private String complemento;
private String bairro;
private String cidade;
private String uf;  

}
public class pessoaFisica extends Pessoa {

private String cpf;
private String nome;
private String dataNasc;
private String rg;
private String orgemissor;
private String uforgE;
private String dataEmissao;

}
public class pessoaJuridica extends Pessoa {

private String cnpj;
private String razaosocial;
private String inscestadual;
private String inscmunicipal;

}
public class Contato {

private String telefonePri;
private String telefoneSec;
private String celularPri;
private String celularSec;
private String whatsAppPri;
private String whatsAppSec;
private String emailPri;
private String emailSec;
private Pessoa p; // Objeto que pega a classe Pessoa.

}

// consulta da camada daoPessoaFisica.

@Override
public ArrayList consultarPF(String cpf) {

    ArrayList<pessoaFisica> lstPF = new ArrayList();

    try {
        sql = "SELECT * FROM pessoa INNER JOIN pessoafisica ON pessoafisica.id_pessoa = pessoa.id_pessoa INNER JOIN contato ON contato.id_pessoa = pessoafisica.id_pessoa AND pessoafisica.cpf=?";

        pst = cnx.getConnection().prepareStatement(sql);
        pst.setString(1, cpf);
        rs = pst.executeQuery();

        while (rs.next()) {

            pessoaFisica pf = new pessoaFisica();

            pf.setId_pessoa(rs.getInt("id_pessoa"));
            pf.setCpf(rs.getString("cpf"));
            pf.setNome(rs.getString("nome"));
            pf.setDataNasc(rs.getString("data_nasc"));
            pf.setRg(rs.getString("rg"));
            pf.setOrgemissor(rs.getString("orgEmissor"));
            pf.setUforgE(rs.getString("uf_orgE"));
            pf.setDataEmissao(rs.getString("data_emissao"));
            pf.setCep(rs.getString("cep"));
            pf.setLogradouro(rs.getString("logradouro"));
            pf.setNumero(rs.getString("numero"));
            pf.setComplemento(rs.getString("complemento"));
            pf.setBairro(rs.getString("bairro"));
            pf.setCidade(rs.getString("cidade"));
            pf.setUf(rs.getString("uf"));

            Contato c = new Contato(); 
           
            c.setTelefonePri(rs.getString("telefonePri"));
            c.setTelefoneSec(rs.getString("telefoneSec"));
            c.setCelularPri(rs.getString("celularPri"));
            c.setCelularSec(rs.getString("celularSec"));
            c.setWhatsAppPri(rs.getString("whatsAppPri"));
            c.setWhatsAppSec(rs.getString("whatsAppSec"));
            c.setEmailPri(rs.getString("emailPri"));
            c.setEmailSec(rs.getString("emailSec"));
            c.setP(pf);
            lstPF.add(pf);
        }
        pst.close();
        rs.close();
        return lstPF;

    } catch (SQLException ex) {
        ex.printStackTrace();
    }
    return null;
}

// VISÃO QUE FAZ A CONSULTA POR CPF.

private void btnprocuraActionPerformed(java.awt.event.ActionEvent evt) {

    if (!v.validaCPF(txtcpf.getText().replace(".", "").replace("-", ""))) {
        JOptionPane.showMessageDialog(null, "CAMPO CPF EM BRANCO OU INVÁLIDO POR FAVOR REDIGITE NOVAMENTE!!!", "MENSAGEM:", JOptionPane.ERROR_MESSAGE, new ImageIcon(getToolkit().createImage(getClass().getResource("/icones/iconeCancela.png"))));
        txtcpf.setValue(null);
        txtcpf.requestFocus();
        this.limparCampos();
        this.desabilitaTudo();
    } else if (daoPF.consultarPF(txtcpf.getText().replace(".", "").replace("-", "")).isEmpty()) {
        JOptionPane.showMessageDialog(null, "CONSULTA NÃO ENCONTADA!!!", "MENSAGEM:", JOptionPane.ERROR_MESSAGE, new ImageIcon(getToolkit().createImage(getClass().getResource("/icones/iconeCancela.png"))));
        txtcpf.setText(null);
        txtcpf.requestFocus();
        this.limparCampos();
        this.desabilitaTudo();

    } else {

        this.habilitaTudo();

        for (pessoaFisica pf : daoPF.consultarPF(txtcpf.getText().replace(".", "").replace("-", ""))) {

            //Dados Pessoais da Pessoa Fisica.
            id = String.valueOf(pf.getId_pessoa());
            txtnome.setText(pf.getNome());
            dataNasc.setDate(Date.valueOf(pf.getDataNasc()));
            txtrg.setText(pf.getRg());
            txtorgemissor.setText(pf.getOrgemissor());
            txtuf_orgE.setText(pf.getUforgE());
            dataEmissao.setDate(Date.valueOf(pf.getDataEmissao()));

            //Dados de Localização da Pessoa Fisica.
            txtcep.setText(pf.getCep());
            txtlogradouro.setText(pf.getLogradouro());
            txtnro.setText(pf.getNumero());
            txtcomplemento.setText(pf.getComplemento());
            txtbairro.setText(pf.getBairro());
            txtcidade.setText(pf.getCidade());
            txtuf.setText(pf.getUf());
            
            //Dados dos Contatos da Pessoa Fisica. -> AQUI QUE ESTA O ERRO NÃO CARREGA A CONSULTA NESTA PARTE.
            txtTelPri.setText(c.getTelefonePri());
            txtTelSec.setText(c.getTelefoneSec());
            txtCelPri.setText(c.getCelularPri());
            txtCelSec.setText(c.getCelularSec());
            txtWSPri.setText(c.getWhatsAppPri());
            txtWSSec.setText(c.getWhatsAppSec());
            txtEmailP.setText(c.getEmailPri());
            txtEmailS.setText(c.getEmailSec());
            c.setP(pf);
        }
    }

}

Boa noite, com o modificador de acesso private você só tem acesso na própria classe, logo seus filhos não herdam os atributos ou métodos definidos como private.

Mais sobre modificadores de acesso.

OBS: Lembrando que classes sempre devem começar com letras maiúsculas e seguir o padrão CamelCase.

SkyGOD eu sei não coloquei os gets e sets para não deixar o codigo extenso de mais aqui no Forum ok!!!

Ah sim, desculpa.

Não deveria ser um ArrayList de contatos? Já que a classe Contato tem uma pessoa, mas a classe Pessoa não sabe nem da existência da classe Contato.

Nesse caso o contato não esta fazendo nada?

            ArrayList<pessoaFisica> lstPF = new ArrayList();

            // resto do código...

            Contato c = new Contato(); 
           
            c.setTelefonePri(rs.getString("telefonePri"));
            c.setTelefoneSec(rs.getString("telefoneSec"));
            c.setCelularPri(rs.getString("celularPri"));
            c.setCelularSec(rs.getString("celularSec"));
            c.setWhatsAppPri(rs.getString("whatsAppPri"));
            c.setWhatsAppSec(rs.getString("whatsAppSec"));
            c.setEmailPri(rs.getString("emailPri"));
            c.setEmailSec(rs.getString("emailSec"));
            c.setP(pf);
            lstPF.add(pf);
        }

E de onde vem essa variável c?

//Dados dos Contatos da Pessoa Fisica. -> AQUI QUE ESTA O ERRO NÃO CARREGA A CONSULTA NESTA PARTE.
            txtTelPri.setText(c.getTelefonePri());
            txtTelSec.setText(c.getTelefoneSec());
            txtCelPri.setText(c.getCelularPri());
            txtCelSec.setText(c.getCelularSec());
            txtWSPri.setText(c.getWhatsAppPri());
            txtWSSec.setText(c.getWhatsAppSec());
            txtEmailP.setText(c.getEmailPri());
            txtEmailS.setText(c.getEmailSec());
            c.setP(pf);

Esse C e uma instancia da Classe Contato que tem por sua vez um Objeto chamado Pessoa dentro da sua classe que encapsula o objeto pf da classe Pessoa Fisica. E representada por uma associação um para um.
Veja minhas Classes que descrevi a cima.

Mas como indicado, o objecto Pessoa não tem qualquer relação com Contacto, apenas o contrário. Retornas uma lista de pessoas mas não tens como obter o contacto a partir de uma Pessoa.

pmlm olha meu diagrama de classe amigo.

Na minha consulta ele pega somente as partes da classe pai e filho mas o q esta ligado a classe pai que é a classe contato ele não carrega nada.
Queria tambem na consulta do sql trazer os dados da tabela contatos.

No SQL estás a trazer os dados da tabela Contatos. Mas depois essa entidade não é referenciada pelo teu objecto Pessoa e o que tu devolves na tua consulta é uma lista de pessoas.

Contato c = new Contato(); 

c.setTelefonePri(rs.getString(“telefonePri”));
c.setTelefoneSec(rs.getString(“telefoneSec”));
c.setCelularPri(rs.getString(“celularPri”));
c.setCelularSec(rs.getString(“celularSec”));
c.setWhatsAppPri(rs.getString(“whatsAppPri”));
c.setWhatsAppSec(rs.getString(“whatsAppSec”));
c.setEmailPri(rs.getString(“emailPri”));
c.setEmailSec(rs.getString(“emailSec”));
c.setP(pf);

Este Contato c é criado e tem dados mas depois não estás a guardar em lado nenhum.

Quando depois tentas acedea c no teu actionperformed essa variavel não existe uma vez que o scope já é completamente diferente. Para manter a lógica que tens, o teu contato tem de ir dentro de pessoa e não o contrário.

pmlm então o objeto contato deve estar dentro da classe pessoa e não ao contrario objeto pessoa dentro da classe contato e isso? mas tambem eu fiz isso e nao deu certo? pode me esclarecer?

Consegui poxa amigo pmlm não sei como te agradecer pela ajuda de bom grado que você me cedeu, mas uma vez fico grato pela ajuda.
Abraço amigo!!!

Olha o codigo como ficou.

private void btnprocuraActionPerformed(java.awt.event.ActionEvent evt) {

    if (!v.validaCPF(txtcpf.getText().replace(".", "").replace("-", ""))) {
        JOptionPane.showMessageDialog(null, "CAMPO CPF EM BRANCO OU INVÁLIDO POR FAVOR REDIGITE NOVAMENTE!!!", "MENSAGEM:", JOptionPane.ERROR_MESSAGE, new ImageIcon(getToolkit().createImage(getClass().getResource("/icones/iconeCancela.png"))));
        txtcpf.setValue(null);
        txtcpf.requestFocus();
        this.limparCampos();
        this.desabilitaTudo();
    } else if (daoPF.consultarPF(txtcpf.getText().replace(".", "").replace("-", "")).isEmpty()) {
        JOptionPane.showMessageDialog(null, "CONSULTA NÃO ENCONTADA!!!", "MENSAGEM:", JOptionPane.ERROR_MESSAGE, new ImageIcon(getToolkit().createImage(getClass().getResource("/icones/iconeCancela.png"))));
        txtcpf.setText(null);
        txtcpf.requestFocus();
        this.limparCampos();
        this.desabilitaTudo();

    } else {

        this.habilitaTudo();

        for (pessoaFisica pf : daoPF.consultarPF(txtcpf.getText().replace(".", "").replace("-", ""))) {

            //Dados Pessoais da Pessoa Fisica.
            id = String.valueOf(pf.getId_pessoa());
            txtnome.setText(pf.getNome());
            dataNasc.setDate(Date.valueOf(pf.getDataNasc()));
            txtrg.setText(pf.getRg());
            txtorgemissor.setText(pf.getOrgemissor());
            txtuf_orgE.setText(pf.getUforgE());
            dataEmissao.setDate(Date.valueOf(pf.getDataEmissao()));

            //Dados de Localização da Pessoa Fisica.
            txtcep.setText(pf.getCep());
            txtlogradouro.setText(pf.getLogradouro());
            txtnro.setText(pf.getNumero());
            txtcomplemento.setText(pf.getComplemento());
            txtbairro.setText(pf.getBairro());
            txtcidade.setText(pf.getCidade());
            txtuf.setText(pf.getUf());
                            
            //Dados dos Contatos da Pessoa Fisica.
            
            txtTelPri.setText(pf.getC().getTelefonePri());
            txtTelSec.setText(pf.getC().getTelefoneSec());
            txtCelPri.setText(pf.getC().getCelularPri());
            txtCelSec.setText(pf.getC().getCelularSec());
            txtWSPri.setText(pf.getC().getWhatsAppPri());
            txtWSSec.setText(pf.getC().getWhatsAppSec());
            txtEmailP.setText(pf.getC().getEmailPri());
            txtEmailS.setText(pf.getC().getEmailSec());                
        }
    }

}