Herança: Problema com toString()

2 respostas
PhoenixWings

Boa noite a todos. Estou estudando herança e estou tentando imprimir os textos através de sobrescrição - consegui fazer através da composição - do toString() e herança, separada em três classes (excetuando a classe que contém main). Contudo, me parece que as chamadas a super.toString() não estão funcionando pois quando executo o código nada é impresso. Vocês poderiam me dizer qual é o erro? Obrigado pela ajuda. Colocarei duas das classes porque a terceira é semelhante à primeira subclasse:

package aluno1;

/**
 *
 * @author Eduardo Felipe
 */
public class Aluno {

  private String nome, matricula, sexo;
  private int idade;

  public Aluno(String n, String mat, String s, int id)
  {
      setNome(n);
      setMatricula(mat);
      setSexo(s);
      setIdade(id);
  }

  private void setNome(String n)
  {
     if(n == null || n.equals("")){
      System.out.println("Não há especificação de nome");
      System.exit(0);
     }
     else
     nome = n;
   }

   private void setMatricula(String mat)
  {
     if(mat == null || mat.equals("")){
      System.out.println("Não há especificação de matrícula");
      System.exit(0);
     }
     else
     matricula = mat;
  }

   private void setSexo(String s)
  {
      String s1;
      s1 = s.toUpperCase();
      if(s == null || s.equals("")){
      System.out.println("Não há especificação de sexo");
      System.exit(0);
     }
     else if(s1.equals("F") || s1.equals("M"))
     sexo = s;

     else
     System.out.println("Caractere incorreto");
     System.exit(0);
   }
  
  private void setIdade(int id)
  {
    idade = (id > 15)? id : 0;
    if(idade == 0){
    System.out.println("A idade do aluno está configurada como 0.");    
    System.exit(0);
   }
  }

  public int getIdade() {
        return idade;
    }

    public String getMatricula() {
        return matricula;
    }

    public String getNome() {
        return nome;
    }

    public String getSexo() {
        return sexo;
    }

  public String toString()
  {
     return String.format("%s\n\n%s: %s\n%s: %s\n%s: %s\n%s: %d\n\n",
             "Dados do aluno", "Nome", getNome(), "Matrícula", getMatricula(),
             "Sexo", getSexo(), "Idade", getIdade());
  }
}
package aluno1;

/**
 *
 * @author Eduardo Felipe
 */
public class AlunoDeGraduacao extends Aluno {

  public AlunoDeGraduacao(String n, String mat, String s, int id)
  {
  super(n, mat, s, id);
  }

  public String graduacao()
  {
     return "Aluno de graduação de Ciência da Computação";
  }

  public String toString()
  {
      return String.format("%s%s", super.toString(), graduacao());
  }
}
package aluno1;

/**
 *
 * @author Eduardo Felipe
 */
public class AlunoTest {
  public static void main(String[] args) {

   // public Secundarista(String n, String mat, String s, int id)
   AlunoDeGraduacao alun1 = new AlunoDeGraduacao("Fulano", "999999999", "M", 15);

      System.out.printf("%s\n", alun1);
  }
}

2 Respostas

nel

Bom dia.

Antes de mais nada, tenha certeza que existem valores a serem impressos pelo o seu objeto, caso contrário, realmente nao irá imprimir nada.
Se sim, adicione o annotion @override na sua classe aluno, creio que o super.toString() esteja invocando o toString() de Object.

Posso estar equivocado, mas teste e apresente o resultado.
Abraços.

PhoenixWings

nel:
Bom dia.

Antes de mais nada, tenha certeza que existem valores a serem impressos pelo o seu objeto, caso contrário, realmente nao irá imprimir nada.
Se sim, adicione o annotion @override na sua classe aluno, creio que o super.toString() esteja invocando o toString() de Object.

Posso estar equivocado, mas teste e apresente o resultado.
Abraços.

eu adicionei a notação override e o programa continua não imprimindo nada. Os argumentos que eu passei para impressão foram os que estão no construtor chamador AlunoDeGraduacao.

Criado 30 de julho de 2010
Ultima resposta 31 de jul. de 2010
Respostas 2
Participantes 2