JorgitoDF 0 Denunciar post Postado Setembro 26, 2013 Boa tarde, Sou iniciante em JAVA, será que alguém aqui pode me ajudar numa questão? Preciso acessar um atributo de uma classe estendida a partir de uma Classe DAO, não estou conseguindo quem puder me ajudar a resolver isso agradeço desde já... Classe Pai: public class ClienteBEAN { private Integer id_cliente; private Integer fk_id_segmento; private Long cli_cnpj; private String cli_nome_cliente; private String cli_sigla; public ClienteBEAN() { } public ClienteBEAN(Integer id_cliente, Integer fk_id_segmento, Long cli_cnpj, String cli_nome_cliente, String cli_sigla) { this.id_cliente = id_cliente; this.fk_id_segmento = fk_id_segmento; this.cli_cnpj = cli_cnpj; this.cli_nome_cliente = cli_nome_cliente; this.cli_sigla = cli_sigla; } public Integer getId_cliente() { return id_cliente; } public void setId_cliente(Integer id_cliente) { this.id_cliente = id_cliente; } public Integer getFk_id_segmento() { return fk_id_segmento; } public void setFk_id_segmento(Integer fk_id_segmento) { this.fk_id_segmento = fk_id_segmento; } public Long getCli_cnpj() { return cli_cnpj; } public void setCli_cnpj(Long cli_cnpj) { this.cli_cnpj = cli_cnpj; } public String getCli_nome_cliente() { return cli_nome_cliente; } public void setCli_nome_cliente(String cli_nome_cliente) { this.cli_nome_cliente = cli_nome_cliente; } public String getCli_sigla() { return cli_sigla; } public void setCli_sigla(String cli_sigla) { this.cli_sigla = cli_sigla; } @Override public String toString() { return "ClienteBEAN [id_cliente=" + id_cliente + ", fk_id_segmento=" + fk_id_segmento + ", cli_cnpj=" + cli_cnpj + ", cli_nome_cliente=" + cli_nome_cliente + ", cli_sigla=" + cli_sigla + "]"; } } Classe Filha public class GovernoBEAN extends ClienteBEAN { private Integer cli_uasg; private String cli_unidade_vinculada; public GovernoBEAN() { } public GovernoBEAN(Integer fk_id_segmento, Integer cli_uasg, String cli_unidade_vinculada) { this.cli_uasg = cli_uasg; this.cli_unidade_vinculada = cli_unidade_vinculada; } public Integer getCli_uasg() { return cli_uasg; } public void setCli_uasg(Integer cli_uasg) { this.cli_uasg = cli_uasg; } public String getCli_unidade_vinculada() { return cli_unidade_vinculada; } public void setCli_unidade_vinculada(String cli_unidade_vinculada) { this.cli_unidade_vinculada = cli_unidade_vinculada; } @Override public String toString() { return "GovernoBEAN [cli_uasg=" + cli_uasg + ", cli_unidade_vinculada=" + cli_unidade_vinculada + "]"; } } Classe DAO public class ClienteDAO implements IDAO<ClienteBEAN> { public void save(ClienteBEAN entidade) throws PersistenciaException { Connection conn = Conexao.open(); PreparedStatement pstm = null; String sql = "INSERT INTO tb_cliente(fk_id_segmento, cli_uasg, cli_cnpj, cli_inscricao_estadual, cli_data_abertura, cli_nome_cliente, " + "cli_sigla, cli_unidade_vinculada) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; try { pstm = conn.prepareStatement(sql); pstm.setInt(1, entidade.getFk_id_segmento()); pstm.setInt(2, entidade.getFk_id_segmento()); pstm.setLong(3, entidade.); //preciso acessar aqui o atributo cli_uasg que está na Classe Filha..... pstm.setString(6, entidade.getCli_nome_cliente()); pstm.setString(7, entidade.getCli_sigla()); pstm.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { Conexao.close(conn, pstm, null); } } public int findMaxId() { Connection conn = Conexao.open(); PreparedStatement pstm = null; ResultSet rs = null; String sql = "SELECT MAX(id_cliente) FROM tb_cliente"; int id = 0; try { pstm = conn.prepareStatement(sql); rs = pstm.executeQuery(); if (rs.next()) { id = rs.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } finally { Conexao.close(conn, pstm, rs); } return id; } } Compartilhar este post Link para o post Compartilhar em outros sites
tockie 1 Denunciar post Postado Setembro 27, 2013 Aparentemente as duas classes estão no mesmo package. Então você terá que fazer apenas uma coisa: mudar o encapsulamento dos atributos da classe ClienteBEAN de private para protected. Se for private, nenhuma outra classe tem acesso aos atributos, mesmo que seja filha. Quando é protected, todas as classes no mesmo package tem acesso aos atributos desta classe, inclusive as filhas. Então talvez você tenha si perguntado: E as outras classes que não são extendidas, como impeço o acesso dessas aos atributos da classe mãe? Você deve colocar as que não extendem de ClienteBEAN em um package diferente. A classe mãe e suas classes filhas devem compartilhar os mesmo package. Assim você faz o empacotamento corretamente. Compartilhar este post Link para o post Compartilhar em outros sites