2013-08-27 2 views
0

Я делаю приложение базы данных студентов, которое имеет разные типы студентов, чтобы практиковать наследование и получать вкус других принципов OO.Ошибка сброса Netbeans о суперконструкторе

У меня есть несколько классов, которые наследуются от класса «Студент». Проблема в том, что у меня возникают проблемы с тем, что подклассы имеют перегруженные конструкторы.

Netbeans в порядке с конструктором Student, по-видимому, но он говорит мне в подклассах, что в суперклассе нет подходящего конструктора. Из всего этого я совершенно смущен.

Вот код до сих пор:

class MyDB { 

    public abstract class Student { 
     //Variable declaration 
     // 
     public String firstName; 
     public String lastName; 
     public int studentID; 
     public float gpa; 
     public String status; 
     public String mentor; 

     //Constructor & overloaded constructors 
     // 
     public Student(String fn, String ln, int ID, float sgpa, String stat, String m) { 
      firstName = fn; 
      lastName = ln; 
      studentID = ID; 
      gpa = sgpa; 
      status = stat; 
      mentor = m; 
     } 

     public Student(String fn, String ln) { 
      this(fn, ln, 0, 0, "", ""); 
     } 

     //Class Methods 
     // 
     public abstract float calculateTuition(String status, float numberOfCreditHours); 
         //Tuition is Calculated 
       /* 
      if(status == "resident") { 
       if(undergraduate) { 
        if(tuition) { 
         return numberOfCreditHours * 200; 
        } else { 
         return numberOfCreditHours * 250; 
        } 
       } else { 
        return numberOfCreditHours * 300; 
       } 
      } else { 
       if(undergraduate) { 
        if(tuition) { 
         return numberOfCreditHours * 400; 
        } else { 
         return numberOfCreditHours * 450; 
        } 
       } else { 
         return numberOfCreditHours * 350; 
       } 
      } 
     */ 


       public abstract void update(); 
      //Database entry is updated 
     public abstract void add(); 
      //Database entry for student is created 
     public abstract void delete(); 
      //Database entry for student is deleted 
     public abstract void query(); 
      //Query to DB is made, then info is returned to the screen 
    } 

    public class Undergraduate extends Student { 
     private String level; 
     private final String m; 

     public String getLevel() { 
      return level; 
     } 
     public void setLevel(String newLevel) { 
      level = newLevel; 
     } 

       //Overloaded Constructor 
     public Undergraduate(String newlevel, String fn, String ln, int ID, float sgpa, String stat, String m) { 
     } 

     @Override 
     public float calculateTuition(String status, float numberOfCreditHours) { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void update() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void add() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void delete() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void query() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 
    } 

    public class Graduate extends Student { 
     private String thesisTitle; 
     private String thesisAdvisor; 

     public String getThesisTitle() { 
      return thesisTitle; 
     } 
     public String getThesisAdvisor() { 
      return thesisAdvisor; 
     } 
     public void setThesisTitle(String newThesisTitle) { 
      thesisTitle = newThesisTitle; 
     } 
     public void setThesisAdvisor(String newThesisAdvisor) { 
      thesisAdvisor = newThesisAdvisor; 
     } 

       //Overloaded Constructor 

     @Override 
     public float calculateTuition(String status, float numberOfCreditHours) { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void update() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void add() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void delete() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void query() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 
    } 

    public class PartTime extends Student { 
     private String company; 
        //Name of sponsoring employer 

     public String getCompany() { 
      return company; 
     } 
     public void setCompany(String newCompany) { 
      company = newCompany; 
     } 

       //Overloaded Constructor 

     @Override 
     public float calculateTuition(String status, float numberOfCreditHours) { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void update() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void add() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void delete() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 

     @Override 
     public void query() { 
      throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
     } 
    } 




    public static void main(String[] args) { 
    } 
} 

пожалуйста игнорируют заявления переопределения. они выглядят беспорядочно, потому что я даю netbeans auto делать все, что он хочет, чтобы избавиться от ошибок.

С этим приложением нужно еще многое сделать, но проблема связана с конструкторами.

Учебники и вопросы, которые я проверил, обычно имеют дело с переопределяющими конструкторами того же класса или подклассами, которые не переопределяют конструкторы.

+0

Ошибки компиляции * напечатаны, * не 'брошены'. Исключения выбрасываются. – EJP

ответ

2

Ваш подкласс должен вызывать один из его родительских конструкторов. Это делается неявно, когда классы имеют конструктор по умолчанию (no-arg). Поскольку Student не имеет конструктора без аргументов, то все проходит от него должны вызвать один из его конструкторов в своем конструкторе, такие как

public class Undergraduate extends Student { 
    public Undergraduate() { 
     super(null, null); 
    } 
    public Undergraduate(String fn, String ln) { 
     super(fn, ln); 
    } 
    //... 
} 

В противном случае, просто добавьте конструктор по умолчанию Student:

protected Student() { 
    this(null, null); 
} 
+0

Хорошо, что имеет смысл. Я чувствовал, что у Студента может быть что-то упущенное, хотя оно было принято netbeans. Знаете ли вы о хорошем ресурсе, я мог бы лучше понять это? Документация oracle не имела этого в одной конкретной статье, которую я мог найти. По крайней мере, не документация новичков оракула. – user2719912

+0

Здесь описано: http://docs.oracle.com/javase/tutorial/java/IandI/super.html – superEb

Смежные вопросы