Olá pessoal…
tenho uma classe chamada PrimeiraClasse:
public class PrimeiraClasse {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
e uma classe que a herda
public class SegundaClasse extends PrimeiraClasse{
}
Consigo acessar os métodos publicos normalmente…porém quando defino um construtor para a Primeira Classe:
public PrimeiraClasse(String nome) {
this.nome = nome;
}
Dá erro na Classe que a estende, por que?
Obrigado
Fala Duke,
A segunda classe obrigatóriamente precisa sobreescrever o construtor da primeira classe.
Se o construtor for identico você pode fazer assim.
public SegundaClasse(String nome) {
super(nome);
}
o super vai chamar o construtor da super classe.
Porque SegundaClasse precisa SEMPRE iniciar o contrutor de PrimeiraClasse dentro do seu próprio contrutor.
Quando PrimeiraClasse não tem um contrutor declarado, ou se ele não tiver argumentos o próprio Java inicia o construtor por baixo dos panos.
Você inicia o construtor da superclasse usando “super(…)” dentro do construtor da subclasse.
Ex.:
[code]public class SegundaClasse extends PrimeiraClasse {
public SegundaClasse(String nome) {
super(nome); //Inicia PrimeiraClasse passando o parâmetro que ele espera
// Quando o construtor da superclasse não tem parâmetros ou não foi declarado
// O Java coloca sempre um super() pra você
}
}[/code]
ah Ok Adilson…muito obrigado cara!
[quote=Eric SantAnna]Porque SegundaClasse precisa SEMPRE iniciar o contrutor de PrimeiraClasse dentro do seu próprio contrutor.
Quando PrimeiraClasse não tem um contrutor declarado, ou se ele não tiver argumentos o próprio Java inicia o construtor por baixo dos panos.
Você inicia o construtor da superclasse usando “super(…)” dentro do construtor da subclasse.
Ex.:
[code]public class SegundaClasse extends PrimeiraClasse {
public SegundaClasse(String nome) {
super(nome); //Inicia PrimeiraClasse passando o parâmetro que ele espera
// Quando o construtor da superclasse não tem parâmetros ou não foi declarado
// O Java coloca sempre um super() pra você
}
}[/code][/quote]
Entendi! valeu…
Então coloca [RESOLVIDO] no título do tópico …