如何覆盖方法

时间:2011-06-10 13:25:48

标签: java methods overrides

    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而没有解决方案的视频。

4 个答案:

答案 0 :(得分:4)

http://download.oracle.com/javase/tutorial/java/IandI/override.html

班级名称也应以大写字母开头。由于我不确定您对功能的要求,这里只是一个例子。超级引用父类,在这种情况下是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 :(得分:1)

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

}

答案 2 :(得分:0)

提示:返回与tax.calcTax()减去$ 500相同的值。

答案 3 :(得分:0)

为了覆盖calcTax的基类(Tax)实现,只需在NJTax中添加自己的calcTax实现。这可以像

一样简单
public double calcTax(){
   return super.calcTax() -500;
}