Duvida c/ herança

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.:

public abstract class Pessoa {
	private String nome;
	private String endereco;

	public void setNome(String nome){
		this.nome = nome;
	}

	public void setNome(String endereco){
		this.endereco = endereco;
	}
	public String getNone(){
		return nome;
	}
	public String getEndereco(){
		return endereco;
	}
}

//classe Usuario(filha)
public class Usuario extends Pessoa{
    private Double codigo;

	public int Usuario(int cod, String nome, String endereco){
		if (houver campo vazio){
			//falta preencher algum campo
		}else{
			this.cod = cod;
			//como faço para setar as variaves ?nome? e ?endereço? p/  			os a tributos ?nome? e ?endereco?(respectivamente) da classe pai?
		}
	}
}

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!!

[quote=rh.rh]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.:

public abstract class Pessoa {
	private String nome;
	private String endereco;

	public void setNome(String nome){
		this.nome = nome;
	}

	public void setNome(String endereco){
		this.endereco = endereco;
	}
	public String getNone(){
		return nome;
	}
	public String getEndereco(){
		return endereco;
	}
}

//classe Usuario(filha)
public class Usuario extends Pessoa{
    private Double codigo;

	public int Usuario(int cod, String nome, String endereco){
		if (houver campo vazio){
			//falta preencher algum campo
		}else{
			this.cod = cod;
			//como faço para setar as variaves ?nome? e ?endereço? p/  			os a tributos ?nome? e ?endereco?(respectivamente) da classe pai?
		}
	}
}

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!!
[/quote]

oi

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

[code]class Pai {

int idade;
String nome;

Pai(int idade, String nome) {
this.idade = idade;
this.nome = nome;
}
}

class Filha extends Pai {
String sobrenome;

Filha(int idade, String nome, String sobrenome) {
super(idade,nome); // aqui eu estou chamando o construtor do pai e setando os atributos de pai
this.sobrenome=sobrenome;
}[/code]

Edit: esqueci de fazer Filha extender Pai

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

[code]public abstract class Pessoa {
private String nome;
private String endereco;

public Pessoa(String nome, String endereco) {
setNome(nome);
setEndereco(endereco);
}

public final void setNome(String nome){
nome = nome.trim();
if (nome.isEmpty())
throw new IllegalArgumentException(“Falta preencher o nome!”);

  this.nome = nome;

}

public void setEndereco(String endereco){
endereco = endereco.trim();
if (endereco.isEmpty())
throw new IllegalArgumentException(“Falta preencher o endereço!”);

  this.endereco = endereco;

}

public String getNone(){
return nome;
}

public String getEndereco(){
return endereco;
}
}

//classe Usuario(filha)
public class Usuario extends Pessoa{
private Double codigo;

public int Usuario(int cod, String nome, String endereco){
super(nome, endereco); //Chama o construtor do pai
this.cod = cod;
}
}[/code]

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.

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?

      public class JanelaPrincipal extends JFrame {       
 
              if (evento.getSource()==menuCadastrarUsuario){   
                 jCadastrarUsuario = new JanelaCadastrarUsuario(JanelaPrincipal.this);  
                 jCadastrarUsuario.setVisible(true);   
              }
 
      }//fim da classe

      //outra classe

      public class JanelaCadastrarUsuario extends JDialog {
              public JanelaCadastrarUsuario(){}//construtor padrão       

              public JanelaCadastrarUsuario(JFrame janelaPai) {
                 super(janelaPai, true);//seta quem será a classe PAI(por traz de quem ela irar ficar)
                 initComponents();//metodo que construi a GUI no formulario
              }//fim do construtor      

           if(evento.getSource()==btDadosAdicionais){
                 JanelaCadastroUsuarioAdicionais j = new JanelaCadastroUsuarioAdcionais(JanelaCadastroUsuario.this); 
                 j.setVisible(true);
           }//fim do if
      }//fim da classe


      //outra classe
public class JanelaCadastroUsuarioAdicionais extends JanelaCadastrarUsuario {
          public JanelaCadastroUsuarioAdicionais(JDialog janelaPai){
           /*aki eu preciso passar p/ JDialog quem foi quem chamou JanelaCadastroUsuarioAdicionais
            so que, ao mesmo tempo, eu preciso que a classe JanelaCadastroUsuarioAdicionais estenda de                  JanelaCadastrarUsuario, pois no futuro, irei precisar dos metodos da classe estendida. 
(e mais ou menos assim!!!) */
             initComponents();
          }//fim do construtor       

      }//fim da classe

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

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…