如何覆盖方法
class TestTax {
public static void main (String[] args){
NJTax t = new NJTax();
t.grossIncome= 50000;
t.dependents= 2;
t.state= "NJ";
double yourTax = t.calcTax();
double totalTax = t.adjustForStudents(yourTax);
System.out.println("Your tax is " + yourTax);
}
}
class tax {
double grossIncome;
String state;
int dependents;
public double calcTax(){
double stateTax = 0;
if(grossIncome < 30000){
stateTax = grossIncome * 0.05;
}
else{
stateTax = grossIncome * 0.06;
}
return stateTax;
}
public void printAnnualTaxReturn(){
// code goes here
}
}
public class NJTax extends tax{
double adjustForStudents (double stateTax){
double adjustedTax = stateTax - 500;
return adjustedTax;
public double calcTax(){
}
}
}
我有课要求的麻烦: “在NJTax覆盖其更改calcTax()的功能calcTax(新版本)应该由$ 500降低税收在返回价值之前。“如何覆盖方法
这是如何完成的。我只有safaribooksonline,没有解决方案的视频。
http://download.oracle.com/javase/tutorial/java/IandI/override.html
NJTax是错误的,只要语法去。类名也应以大写字母开头。由于我不完全确定你想要什么功能,这里只是一个例子。超级是指父级,在这种情况下是tax
。因此,NJTax
的calcTax()方法返回tax.calcTax() - 500
。您也可以考虑使用@Override
注释作为清除方法被覆盖并提供编译时检查的方式。
public class NJTax extends tax {
public double adjustForStudents (double stateTax) {
double adjustedTax = stateTax - 500;
return adjustedTax;
}
public double calcTax() {
return super.calcTax() - 500;
}
}
+1,用于包含'@ Override'注释。出于某种原因,其他人忽略了这个...... :) – mre 2011-06-10 13:40:36
这个解决方案很好,但有一点小问题。如果收入低于20,000,NJTax calcTax方法将返回负数。 – idungotnosn 2011-06-14 00:47:42
提示:返回与tax.calcTax()
相同的值减去500美元。
public class NJTax extends tax{
double adjustForStudents (double stateTax){
double adjustedTax = stateTax - 500;
return adjustedTax;
}
public double calcTax(){
double stateTax = super.calcTax();
return this.adjustforStudents(stateTax);
}
}
为了覆盖calcTax的基类(Tax)实现,只需在NJTax中添加自己的calcTax实现即可。这可能是那样简单
public double calcTax(){
return super.calcTax() -500;
}
下面的基本解决方案是好的,但有一件事你应该记住: 公共双calcTax(){ 回报super.calcTax() - 500; } – idungotnosn 2011-06-14 00:39:55