Java 方法继承和调用

Java 方法继承和调用,java,inheritance,Java,Inheritance,我需要从超类继承一个实例方法,但我被卡住了 public class Pay private float hours; private float rate; private int hrsStr; float gross; double tax; public void calc_Payroll() { if (hrsStr != 0) gross = hrsStr + ((hours - hrsStr) * 1.33f) * rate; else

我需要从超类继承一个实例方法,但我被卡住了

public class Pay

private float hours;
private float rate;
private int hrsStr;
float gross;
double tax; 

public void calc_Payroll()
{
    if (hrsStr != 0)
        gross = hrsStr + ((hours - hrsStr) * 1.33f) * rate;
    else
        gross = hours * rate;
}

public void tax(double a)
    {
    if (gross <= 399.99)
                tax = .92;
                else
                    if (gross <= 899.99)
                        tax = .88;
                    else 
                        tax = .84;
    }
子类中的void calc_payroll()不会重写或调用super类方法

如果要重写基类中的方法,则方法签名必须相同。为清晰起见,请使用@override注释

@override
public void calc_Payroll(float a, float b, int c, float d)
{
}
如果您的新方法具有不同的签名,那么您可以使用…调用超类方法

void calc_payroll()
{
   super.calc_Payroll( ... );
}

取决于您在新方法中需要什么行为,以及您是否希望调用super class方法中的行为。

我尝试使用calc_payroll来计算子类中的净薪酬。我想让它调用tax方法和calc_payroll方法来计算并返回净工资,参数float a,float b,int c,float d的目的是什么?它们似乎没有被使用,我只是意识到我不需要这些参数,因为它们来自私有实例变量。删除参数将匹配方法签名,因此您的基本方法现在将重写-使用super关键字从您的基本类调用超类方法我可以使用多个super吗,因为我还需要使用super@Override不一定需要,但建议使用。真正的问题是,您没有与试图覆盖的方法相同的可访问性或拼写。(public,calc_Payroll,大写P)@JawadLeWywadi,如果签名相同,则不会覆盖该方法;@Override注释并不是一个神奇的补丁。也就是说,这是一个很好的实践。问题是子类的方法A)与超类的情况不同,B)将超方法的可见性降低到包级别。它必须声明为
public void calc_Payroll
这只是一条评论,但是谢谢。我想知道是否有任何名为Override的用户以及他们被ping的频率。
void calc_payroll()
{
   super.calc_Payroll( ... );
}