界面、抽象和 类
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
,因为您没有在 PostGrad
或 UnderGrad
中覆盖它们,但它也不是 "wrong"。
所以你可以这样写:
public double interest() {
return getFeesOwed() + (getFeesOwed() * 0.14);
}
如果您要覆盖它们,您很可能也想使用它们,所以再次没有 super
。
通常使用 super
关键字,如果一个方法被覆盖以 添加 一些额外的功能,而不是完全重写被覆盖方法的代码。
我正在努力完成附件 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
,因为您没有在 PostGrad
或 UnderGrad
中覆盖它们,但它也不是 "wrong"。
所以你可以这样写:
public double interest() {
return getFeesOwed() + (getFeesOwed() * 0.14);
}
如果您要覆盖它们,您很可能也想使用它们,所以再次没有 super
。
通常使用 super
关键字,如果一个方法被覆盖以 添加 一些额外的功能,而不是完全重写被覆盖方法的代码。