Не удается получить подкласс для наследования или переопределения от суперкласса - PullRequest
0 голосов
/ 04 февраля 2020

Я уверен, что я охватил основы. Я поставил @Override перед переопределением методов. Я удостоверился, чтобы включить 'расширяет Супер' на линии класса. Я также не могу переопределить конструктор. Я передал правильное количество переменных правильного типа, и оно выдает мне сообщение об ошибке, в котором «фактические и формальные списки аргументов различаются по длине». Наряду с ошибками при чтении переменных stati c из класса TuitionConstants.

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

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

}
...