Duvida c/ herança  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
rh.rh
HelloWorld
[Avatar]

Membro desde: 17/06/2009 09:13:14
Mensagens: 13
Offline

saudações a todos!!!
O codigo a baixo so é um exemplo!!

é mais ou menos assim:
tenho uma classe ?Pessoa?(pai) e uma classe ?Usuario?(filha)
como faço para no construtor da classe ?Usuario?(filha) setar os valores dos atributos da classe ?Pessoa?(pai)

ex.:


obs.: a forma que funcionou foi deixar os atributos da classe pai(Pessoa) como public. So que, dessa forma, todo mundo do projeto(todas as classes) iram poder alterar tais atributos!
Eu tentei usar os metodos ?sets? da classe ?Pessoa?(pai) para boter setar os valores dos atributos citados(nome e endereco) mais n tive sucesso!
ex.super.setNome = nome?
erro: criar um campo ?setNome na classe Pessoa?(pai)

O abstract da classe pessoa, é so p/ garantir que ninguém crie um objeto pessoa!!!
no projeto tb há outras classes que estende(extends) da classe ?Pessoa?
ex.: cliente, dependente...
grato pela atenção!!

Porque desde a antiguidade não se ouviu, nem se viu um DEUS alem de ti q trabalha para aquele que nele espera!
[Email] [MSN]
André Fonseca
JWizard
[Avatar]

Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline

rh.rh wrote:saudações a todos!!!
O codigo a baixo so é um exemplo!!

é mais ou menos assim:
tenho uma classe ?Pessoa?(pai) e uma classe ?Usuario?(filha)
como faço para no construtor da classe ?Usuario?(filha) setar os valores dos atributos da classe ?Pessoa?(pai)

ex.:


obs.: a forma que funcionou foi deixar os atributos da classe pai(Pessoa) como public. So que, dessa forma, todo mundo do projeto(todas as classes) iram poder alterar tais atributos!
Eu tentei usar os metodos ?sets? da classe ?Pessoa?(pai) para boter setar os valores dos atributos citados(nome e endereco) mais n tive sucesso!
ex.super.setNome = nome?
erro: criar um campo ?setNome na classe Pessoa?(pai)

O abstract da classe pessoa, é so p/ garantir que ninguém crie um objeto pessoa!!!
no projeto tb há outras classes que estende(extends) da classe ?Pessoa?
ex.: cliente, dependente...
grato pela atenção!!


oi

uma das alternativas é você setar usando o construtor do pai, por exemplo



Edit: esqueci de fazer Filha extender Pai

This message was edited 1 time. Last update was at 03/07/2009 06:44:22


Você é novo no GUJ?


Como fazer perguntas?



www.twitter.com/_afonseca
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20576
Localização: Curitiba/PR
Online

Crie um construtor na classe pessoa. Chama esse construtor na classe filha:



Você pode chamar o setNome e o setEndereco do construtor de pessoa, desde que mantenha os dois como final, como eu fiz ali em cima. Isso impedirá que haja sobrecarga na classe filha, o que não funciona direito quando estamos falando de construtores (a sobrecarga pode tentar usar um atributo da filha, que não está construída ainda).

Caso não queira deixa-los fácil, você terá que duplicar o código dos setters no construtor.


Outra forma, menos segura, é tornar os atributos protected. Isso permitirá que você faça o set neles diretamente, na classe filha. O protected é um public para os filhos e para todas as classes do mesmo pacote. Se as duas ficarem no mesmo pacote, você ainda pode deixar os atributos com o modificador default (sem escrever modificador nenhum). Isso permitirá que as classes do mesmo pacote modifiquem o atributos, mas classes de fora não, independente se é ou não filha.

Mas eu não aconselho usar esse método. Ele permitirá o acesso desencapsulado ao atributo, além de expor a classe.

This message was edited 5 times. Last update was at 03/07/2009 06:56:37


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
rh.rh
HelloWorld
[Avatar]

Membro desde: 17/06/2009 09:13:14
Mensagens: 13
Offline

Ups... pelo menos o erro foi embora!

Não gosto muito de fazer isso, mais p/ facilitar, vou postar o que eu realmente quero! La vamos nos!!!!
eu tenho uma classe principal (JanelaPrincipal - estende de JFrame)

tenho tb, mais duas classes: ?JanelaCadastrarUsuario(JDialog)? e ?JanelaCadastroUsuarioAdicionais? que é filha de "JanelaCadastrouUsuario"

na classe ?JanelaPrincipal(JFrame)? tem um botão que, quando clicado, abri a classe ?JanelaCadastrarUsuario(JDialog)?. E na classe ?JanelaCadastrarUsuario? tem outro botão que, quando clicado, abri a classe ?JanelaCadastroUsuarioAdicionais?




obs.: as classes estão em arquivos diferentes. O codigo so é um exemplo!
é mais ou nenos assim;

Porque desde a antiguidade não se ouviu, nem se viu um DEUS alem de ti q trabalha para aquele que nele espera!
[Email] [MSN]
laudenpower
JavaEvangelist
[Avatar]

Membro desde: 28/12/2008 21:00:08
Mensagens: 349
Offline

Bom pelo que observei a sua motivação é criar uma janela usando herança, certo? Nesse caso acredito que o processo não seja o mesmo que o utilizado em classes java tipo POJO. Eu ainda sou da tese que é preferível usar composição do que herança....

Enquanto cultivares teu saber, nada tens a temer!

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team