Java Can';t获取要从超类继承或重写的子类

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

我敢肯定我涵盖了基本知识。我把@Override放在重写方法之前。我确保在类的行中包含“扩展超级”。我也不能重写构造函数。我传递了正确类型的适当数量的变量,它会给我一条错误消息,告诉我“实际参数列表和形式参数列表的长度不同。”以及没有从TutionConstants类读取静态变量的错误

// 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;

}