Dúvida (iniciante) herança[RESOLVIDO]

5 respostas
D

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

5 Respostas

A

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.

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

}
D

ah Ok Adilson…muito obrigado cara!

D
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.:
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ê
	}

}
Entendi! valeu....
fernandosavio

Então coloca [RESOLVIDO] no título do tópico …

Criado 7 de outubro de 2011
Ultima resposta 7 de out. de 2011
Respostas 5
Participantes 4