界面、抽象和 类

interface,abstract and classes

我正在努力完成附件 Appendix。我只想知道我是否根据附录正确编码,以及我使用的方法是否正确。我不确定我是否在 interest() 下做了正确的事情。我在哪里称超级 类 对吗?

public interface LoanInterest {
    double interest();
    String getName();
    String toString();

} //end of  LoanInterest
public abstract class Student implements LoanInterest {
    private String name;
    private String studentNumber;
    private double feesOwed;

    public Student(String nm, String num, double amt) {
        name = nm;
        studentNumber = num;
        feesOwed = amt;
    }

    public double getFeesOwed() {
        return feesOwed;
    }

    public String getStudentNumber() {
        return studentNumber;
    }

    public String getName() {
        return name;
    }


    public String toString() {
        String msg;
        msg = String.format("%s\t%s\t%.2f", name, getStudentNumber(), getFeesOwed());
        return msg;
    }

} //end of Student


public class UnderGrad extends Student {

    public UnderGrad(String nm, String num, double amt) {
        super(nm, num, amt);
    }

    public double interest() {
        return super.getFeesOwed() + (super.getFeesOwed() * 0.14);
    }
} //end of UnderGrad 

public class PostGrad extends Student {
    private String diploma;

    public PostGrad(String nm, String num, double amt) {
        super(nm, num, amt);
    }


    public String getDiploma() {
        return diploma;
    }

    public double interest() {
        return super.getFeesOwed() + (super.getFeesOwed() * 0.14);
    }

} //end of PostGrad

您不需要调用 super.methodName,因为您没有在 PostGradUnderGrad 中覆盖它们,但它也不是 "wrong"。

所以你可以这样写:

public double interest() {
    return getFeesOwed() + (getFeesOwed() * 0.14);
}

如果您要覆盖它们,您很可能也想使用它们,所以再次没有 super

通常使用 super 关键字,如果一个方法被覆盖以 添加 一些额外的功能,而不是完全重写被覆盖方法的代码。