我需要从超类继承一个实例方法,但我被卡住了。
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;
}
这是超类的一部分,我需要有相同的方法签名(???)以及调用税(double a)和calc_payroll()
这是我为子类所做的,但它没有用。
public class Payroll extends Pay
{
float net;
void calc_payroll()
{
float finaltax = (float) tax;
net = gross * finaltax;
}
}
答案 0 :(得分:2)
子类中的void calc_payroll()不会覆盖或调用超类方法。
如果要覆盖基类中的方法,则方法签名必须相同。为清晰起见,请使用@override注释。
@override
public void calc_Payroll(float a, float b, int c, float d)
{
}
如果您的新方法具有不同的签名,则可以使用....
调用超类方法void calc_payroll()
{
super.calc_Payroll( ... );
}
取决于您在新方法中需要的行为,以及是否要在超类方法中调用行为。