打印数组列表时,抽象测试方法错误



我创建了一个Employee类,用于按周计算工资。然后,我为工资和小时雇员创建了2个子类。我的问题是在我的测试类没有打印出数组列表,然后检索正确的双周工资。是不是另一双眼睛能帮上忙。

/** Employee class with abstract method*/
public abstract class Employee {
public String fullName;
/** construct a default employee object*/
public Employee() {
}
public String getFullName() {
    return fullName;
}
public void setFullName(String fullName) {
    this.fullName = fullName;
}
/** abstract method getBIWeeklyPay */
public abstract double getBiWeeklyPay(); 
public void printgetBiWeeklPay() {
   System.out.println("Employee "+this.fullName+ "'s"+ "Bi-weekly pay is:");
}   
}
/**Salary Class*/
public class SalaryEmployee extends Employee {

public SalaryEmployee() {
}
public double salary;
public double getBiWeeklyPay() {
    return salary/(52*2) ;
}
public double getSalary() {
    return salary;
}
public void setSalary(double salary) {
    this.salary = salary;
}
 }
/** Hourly Class*/
public class HourlyEmployee extends Employee {
public double hourlyRate;
public double hoursPerWeek;

public HourlyEmployee() {
}
public double getBiWeeklyPay() {
    return hourlyRate * (hoursPerWeek *2);
}
public double getHourlyRate() {
    return hourlyRate;
}
public void setHourlyRate(double hourlyRate) {
    this.hourlyRate = hourlyRate;
}
public double getHoursPerWeek() {
    return hoursPerWeek;
}
public void setHoursPerWeek(double hoursPerWeek) {
    this.hoursPerWeek = hoursPerWeek;
}   
}
 /**Test Class*/
  import java.util.*;
  public class EmployeeTest {
public static void main(String[] args){
ArrayList<Employee> employees = new ArrayList<Employee>();
SalaryEmployee mike = new SalaryEmployee();
mike.setFullName("Mike Burns");
mike.setSalary(75000.00);
employees.add(mike);
HourlyEmployee tim = new HourlyEmployee();
tim.setFullName("Tim Globe");
tim.setHourlyRate(12.00);
tim.setHoursPerWeek(40.00);
employees.add(tim);
print(employees);
}
 public static void print(ArrayList<Employee> employees){   
    for(Employee e: employees){
      e.printgetBiWeeklyPay();
}
}
  }

你的var employees是ArrayList类型的,但是ArrayList没有printBiWeeklyPay函数。

相反,你应该创建自己的printBiWeeklyPay函数,该函数接受ArrayList作为参数并调用它。

一个例子是:

public void printByWeeklyPay(ArrayList<Employee> list) {
    for (Employee e : list) {
        System.out.println(e.toString());
    }
}

还必须在Employee类中重写#toString()以返回一些相关的输出。

public static void main(String args[]) {
ArrayList<Employee> employees = new ArrayList<Employee>();
employees.add(john); // hourly employee
employees.add(fred); // salary employee
employees.add(bob);  //hourly employee
print(employees);
}
public static void print(ArrayList<Employee> employees) {
   for each employee in employees {
       employee.printBiWeeklyPay();
   }
}

最新更新