Java Netbeans抛出有关超级构造函数的错误
我正在制作一个学生数据库应用程序,其中有不同类型的学生练习继承,并尝试其他OO原则 我有几个从超级“学生”类继承的类。问题是我很难让子类具有重载构造函数 Netbeans显然可以使用学生构造函数,但它在子类中告诉我在超类中找不到合适的构造函数。仅凭这一点,我就完全糊涂了 以下是迄今为止的代码:Java Netbeans抛出有关超级构造函数的错误,java,inheritance,netbeans,constructor,Java,Inheritance,Netbeans,Constructor,我正在制作一个学生数据库应用程序,其中有不同类型的学生练习继承,并尝试其他OO原则 我有几个从超级“学生”类继承的类。问题是我很难让子类具有重载构造函数 Netbeans显然可以使用学生构造函数,但它在子类中告诉我在超类中找不到合适的构造函数。仅凭这一点,我就完全糊涂了 以下是迄今为止的代码: class MyDB { public abstract class Student { //Variable declaration // pu
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做它想做的任何事情来消除错误
应用程序还有很多工作要做,但目前的问题是构造函数
我检查过的教程和问题通常涉及同一类的重写构造函数,或者不重写构造函数的子类。您的子类必须调用其父构造函数之一。当类具有默认(无参数)构造函数时,这是隐式完成的。由于
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);
}
好吧,这是有道理的。我觉得这个学生可能遗漏了什么,尽管它被netbeans接受了。你知道有什么好的资源可以让我更好地理解这一点吗?oracle文档中没有我能找到的一篇特定文章。至少不是初学者的oracle文档。编译错误是打印出来的,而不是“抛出的”。抛出异常。