我需要從超類繼承實例方法,但我卡住了。方法繼承和調用
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;
}
這是超階級的一部分,我需要有相同的方法簽名(???)的以及調用稅(雙A)和calc_payroll()
這是我有什麼對於子類,但它不起作用。
public class Payroll extends Pay
{
float net;
void calc_payroll()
{
float finaltax = (float) tax;
net = gross * finaltax;
}
}
@Override不一定是必需的,但建議使用。真正的問題是你沒有相同的可訪問性或拼寫的方法,你試圖重寫。 (* public *,* calc_Payroll * with capital * P *) – DoubleDouble
@JawadLeWywadi,如果簽名是相同的,則不會覆蓋該方法; @Override註釋不是魔術修復。也就是說,這是一個很好的做法。問題是子類的方法是A)與超級類不同,並且B)降低了超級方法對包級別的可見性。它必須聲明爲'公共無效calc_Payroll' – Tgsmith61591
這只是一個評論傢伙,但謝謝。 – 2015-10-14 20:54:55