我正在爲學校開發一個工資單程序,並且有一個工資單驅動程序,Employee類,Hourly類(擴展Employee),Salaried
class(extends Employee)和SalariedPlusCommission
class(extends Salaried )。下面的代碼是Employee對象和Employee的load()
方法(也是每個子類中的load()
方法)。我必須有一個抽象方法getEarnings()
,所以整個Employee類都是抽象的。我得到一個錯誤,說「員工是抽象的,不能實例化」。我明白爲什麼我收到錯誤,但我不知道如何將信息放入我的Employee對象。在抽象類中返回對象的解決方法
public Employee(String name, String socialSecurityNumber, int month, int week)
{
this.name=name;
this.socialSecurityNumber=socialSecurityNumber;
this.month=month;
this.week=week;
}
public static Employee load()
{
Scanner stdIn = new Scanner (System.in);
System.out.println("Name ==> ");
name=stdIn.nextLine();
System.out.println("Social Security Number ==>");
socialSecurityNumber=stdIn.nextLine();
System.out.println("Birthday Month '('1-12')' ==> ");
month=stdIn.nextInt();
System.out.println("Birthday Bonus Week '('1-4')' ==>");
week=stdIn.nextInt();
return new Employee(name, socialSecurityNumber, month, week);
}
如果它幫助這裏是從每小時的每小時對象和load()
方法:
public Hourly(String name, String socialSecurityNumber, int month, int week, double hourlyPay, double hoursWorked)
{
super(name, socialSecurityNumber, month, week);
this.hourlyPay=hourlyPay;
this.hoursWorked=hoursWorked;
}
public static Hourly load()
{
Scanner stdIn = new Scanner (System.in);
System.out.println("Hourly Pay ==> ");
hourlyPay=stdIn.nextDouble();
System.out.println("Hours Worked This Past Week ==>");
hoursWorked=stdIn.nextDouble();
return new Hourly(name, socialSecurityNumber, month, week, hourlyPay, hoursWorked);
}
您是否試圖通過聲明抽象來調用公共構造函數? – Jordon