【问题标题】:interface,abstract and classes接口、抽象和类
【发布时间】:2015-10-25 12:46:48
【问题描述】:

我正在尝试完成附件Appendix。我只是想知道我是否根据附录正确编码并且我使用了正确的方法。我不确定我是否在兴趣()下做了正确的事情。我在哪里调用超类是正确的吗?

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

【问题讨论】:

    标签: java inheritance interface abstract-class


    【解决方案1】:

    您不需要调用super.methodName,因为您没有在PostGradUnderGrad 中覆盖它们,但它也没有“错误”。

    所以你可以写:

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

    如果你要覆盖它们,你很可能也想使用它们,所以还是不要super

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

    【讨论】:

    • 谢谢你。我拿出了super。我是否正确应用或实现了接口和抽象?我的课程是否根据附录正确编码?
    • 看起来正确。您可能希望将 @Override 注释添加到执行此操作的方法中,这不是必需的,而是一个很好的约定。并且可以直接在toString方法中返回String,无需将其赋值给局部变量。
    猜你喜欢
    • 2017-02-19
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多