Por que essa classe tem dois construtores?

Vejo isso no slide que visa ilustrar construtores. Estou confuso agora, porque dois construtores que têm o mesmo trabalho aceitam definir gpa como zero no segundo. Por que o codificador precisa repetirthis.id = id; this.name = name; novamente? Por que essa classe precisa de dois construtores?

class Student{
      private int id;
      private String name;
      private double gpa;
      public Student(int id, String name, double gpa){
        this.id = id;  this.name = name;   this.gpa = gpa;
      }
      public Student(int id, String name){
        this.id = id;  this.name = name;   gpa = 0.0;
      }
      public boolean equals(Student other){
          return id == other.id && name.equals(other.name) 
                       && gpa == other.gpa;
      }
      public String toString(){
        return name + " " + id + " " + gpa;
      }
      public void setName(String name){
        this.name = name;
      }
      public double getGpa(){
        return gpa;
      }
    }

questionAnswers(6)

yourAnswerToTheQuestion