Java Can';t获取要从超类继承或重写的子类
我敢肯定我涵盖了基本知识。我把@Override放在重写方法之前。我确保在类的行中包含“扩展超级”。我也不能重写构造函数。我传递了正确类型的适当数量的变量,它会给我一条错误消息,告诉我“实际参数列表和形式参数列表的长度不同。”以及没有从TutionConstants类读取静态变量的错误Java Can';t获取要从超类继承或重写的子类,java,inheritance,constructor,overriding,Java,Inheritance,Constructor,Overriding,我敢肯定我涵盖了基本知识。我把@Override放在重写方法之前。我确保在类的行中包含“扩展超级”。我也不能重写构造函数。我传递了正确类型的适当数量的变量,它会给我一条错误消息,告诉我“实际参数列表和形式参数列表的长度不同。”以及没有从TutionConstants类读取静态变量的错误 // This is the super class public abstract class Student implements Comparable<Student> { p
// This is the super class
public abstract class Student implements Comparable<Student> {
private int mCredits;
private String mFirstName;
private String mId;
private String mLastName;
private double mTuition;
public Student(String pId, String pFirstName, String pLastName) {
mId = pId;
mFirstName = pFirstName;
mLastName = pLastName;
}
public abstract void calcTuition();
@Override
public int compareTo(Student pStudent) {
return getId().compareTo(pStudent.getId());
}
public int getCredits() {
return mCredits;
}
public String getFirstName() {
return mFirstName;
}
public String getId() {
return mId;
}
public String getLastName() {
return mLastName;
}
public double getTuition() {
return mTuition;
}
public void setCredits(int pCredits) {
mCredits = pCredits;
}
public void setFirstName(String pFirstName) {
mFirstName = pFirstName;
}
public void setId(String pId) {
mId = pId;
}
public void setlastName(String pLastName) {
mLastName = pLastName;
}
protected void setTuition(double pTuition) {
mTuition = pTuition;
}
}
除了无法找到
tuionConstants
,您的代码不会为我显示错误。你能提供一个答案吗?你需要告诉我们是哪一行导致了错误。另外,请尽量使你的例子尽可能小。你真的不需要所有这些字段和设置来说明你的问题。你能提供你看到的错误吗?@Charles.Hi我得到的错误是子类构造函数中的“实际参数列表和形式参数列表长度不同”。你没有向我们展示定义了Student
的包。你确定你引用的是正确的学生
班级吗?
import p02.Student;
import p02.TuitionConstants;
public class OnCampusStudent extends Student {
public static final int RESIDENT = 1;
public static final int NON_RESIDENT = 2;
private int mResident;
private double mProgramFee;
//Error on this constructor. Says 'actual and formal argument lists differ in length
public OnCampusStudent(String pId, String pFirstName, String pLastName) {
super(pId, pFirstName, pLastName);
}
// Errors on this method. On @Override line:"method does not override or implement a method
// from a supertype. Also on the lines that call getCredits(), it says "cannot find symbol,"
// but it's a method from the superclass. Same "cannot find symbol" error on the lines that call
// the static variables from the TuitionConstants class.
@Override
public void calcTuition() {
double t;
if (getResidency() == RESIDENT) {
t = TuitionConstants.ONCAMP_RES_BASE;
} else {
t = TuitionConstants.ONCAMP_NONRES_BASE;
}
t = t + getProgramFee();
if (getCredits() > TuitionConstants.ONCAMP_MAX_CREDITS) {
t = t + (getCredits() - TuitionConstants.ONCAMP.MAX.CREDITS) * TuitionConstants.ONCAMP_ADD_CREDITS;
}
setTuition(t);
}
}
// Here is the TuitionConstants Class.
public class TuitionConstants {
public static final int ONCAMP_ADD_CREDITS = 475;
public static final int ONCAMP_MAX_CREDITS = 18;
public static final int ONCAMP_NONRES_BASE = 14875;
public static final int ONCAMP_RES_BASE = 7575;
public static final int ONLINE_CREDIT_RATE = 950;
public static final int ONLINE_TECH_FEE = 75;
}