[resolvido] Invocar o construtor

5 respostas
P

Como invocar um construtor de uma superclasse?

Eu tenho 2 arquivos, um arquivo com a Classe Animal e um outro arquivo contendo uma classe chamada Periquito, que herda da classe animal seus atributos e métodos, eu não sei como na classe Periquito invocar o construtor da classe pai ou da superclasse Animal

abstract class Animal {

//atributos

  private String nome;
  private int sexo;
  private int anoNascimento;
  private String cor;

// Construtor

  Animal(String nome, int sexo, int anoNascimento, String cor) {
    this.nome = nome;
    this.sexo = sexo;
    this.anoNascimento = anoNascimento;
    this.cor = cor;
  }


// get e set

  public String getNome() {
    return nome;
  }

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

  public int getSexo() {
    return sexo;
  }

  public void setSexo(int sexo) {
    if (sexo == 0) {
      this.sexo = sexo;
    } else if (sexo == 1) {
      this.sexo = sexo;
    } else {
      System.out.println("Não existe essa opção, digite [0] - Feminino ou [1] - Masculino");
    }
  }

  public int getAnoNascimento() {
    return anoNascimento;
  }

  public void setAnoNascimento(int anoNascimento) {
    this.anoNascimento = anoNascimento;
  }

  public String getCor() {
    return cor;
  }

  public void setCor(String cor) {
    this.cor = cor;
  }

// metodos

  public abstract void mover();

  public abstract void emitirSom();

}

Essa é a classe Periquito

class Periquito extends Animal {

//atributos

  private int qtdOvosPorAno;
  private int autonomiaVoo;

// Construtor

  Periquito(int qtdOvosPorAno, int autonomiaVoo) {
    this.qtdOvosPorAno = qtdOvosPorAno;
    this.autonomiaVoo = autonomiaVoo;
  }

  //construtor da SuperClasse

// get e set

  public int getQtdOvosPorAno() {
    return qtdOvosPorAno;
  }

  public void setQtdOvosPorAno(int qtdOvosPorAno) {
    this.qtdOvosPorAno = qtdOvosPorAno;
  }

  public int getAutonomiaVoo() {
    return autonomiaVoo;
  }

  public void setAutonomiaVoo(int autonomiaVoo) {
    this.autonomiaVoo = autonomiaVoo;
  }

// metodos

  public void mover() {
    System.out.println("VOANDO...");
  }

  public void emitirSom() {
    System.out.println("PIU PIU PIU...");
  }

  public void bicar() {
    System.out.println("BICANDO...");
  }

  public void botar() {
    System.out.println("BOTANDO...");
  }
}

5 Respostas

nel

É da mesma forma que invoca um método. Use o “super”, de modo a ficar claro seu objetivo.
Veja:

Periquito(String nome, int sexo, int anoNascimento, String cor) { super(nome, sexo, anoNascimento, cor); }

P

Mais eu tenho que criar apenas um construtor ou que você colocou foi o segundo construtor sendo esse o da superclasse? e eu preciso inicializar?

P

Como ficaria meu código?

nel

Tu precisa ver sua necessidade. Você precisa/quer chamar o construtor da superclasse ? Você precisa dos mesmos parâmetros ? Quantos construtores tu precisa ?
São algumas questões que tu precisa analisar, você pode ter quantos construtores julgar necessário. Obviamente, você precisa inicializar o seu objeto, dar uma referência a ele.

Por exemplo, sua classe Periquito, você já tem um construtor. Vamos adicionar mais dois, um idêntico a super classe e outro default.

class Periquito extends Animal {  
  
//atributos  
  
  private int qtdOvosPorAno;  
  private int autonomiaVoo;  
  
  // construtor default
  Periquito() {}
   
  Periquito(String nome, int sexo, int anoNascimento, String cor) {    
   super(nome, sexo, anoNascimento, cor);  
  }  

  Periquito(int qtdOvosPorAno, int autonomiaVoo) {  
    this.qtdOvosPorAno = qtdOvosPorAno;  
    this.autonomiaVoo = autonomiaVoo;  
  }  
  
  //construtor da SuperClasse  
  
// get e set  
  
  public int getQtdOvosPorAno() {  
    return qtdOvosPorAno;  
  }  
  
  public void setQtdOvosPorAno(int qtdOvosPorAno) {  
    this.qtdOvosPorAno = qtdOvosPorAno;  
  }  
  
  public int getAutonomiaVoo() {  
    return autonomiaVoo;  
  }  
  
  public void setAutonomiaVoo(int autonomiaVoo) {  
    this.autonomiaVoo = autonomiaVoo;  
  }  
  
// metodos  
  
  public void mover() {  
    System.out.println("VOANDO...");  
  }  
  
  public void emitirSom() {  
    System.out.println("PIU PIU PIU...");  
  }  
  
  public void bicar() {  
    System.out.println("BICANDO...");  
  }  
  
  public void botar() {  
    System.out.println("BOTANDO...");  
  }  
}

Agora sua classe possui três construtores. O default, não obriga você a passar nenhum parâmetro, enquanto os outros sim. Conseguiu entender ?

P

Agora ficou claro.
Muito Obrigado

Criado 6 de agosto de 2012
Ultima resposta 6 de ago. de 2012
Respostas 5
Participantes 2