2012-02-07 58 views
-1

我必须制作一个涉及6个类的程序。员工继承,多态性和抽象类

  1. 抽象的Employee类,超
  2. 工资的员工,继承 员工
  3. HOurlyEmployee,继承员工
  4. 佣金 员工继承雇工
  5. employeeManager-包含 员工阵列提供专营店管理阵列和 员工存储在
  6. employeeDriver - 包含用户使用的主要方法和一个 菜单系统。

所以我想我得到了他们除了EmployeeManager。在这个课上,我知道我需要从EmployeeDriver获得方法。我不知道如何使用阵列,因为我需要输入SalaryEmployee,HourlyEmployeeCommissionEmployee的信息。用户还可以选择列出所有HOurlyEmployees或SalaryEmployees或commisionEmployees及其信息。我知道我必须循环访问数组,但我不知道如何执行这些操作。请帮帮我!

+2

听起来EmployeeDriver包含(公会)EmployeeManager。司机给出了一个菜单,其中包括获得薪水等选项。驱动程序将在Manager上调用“getSalary()”,管理器将调用其所有员工的“getSalary()”多态函数(像你说的那样循环遍历数组)。你没有得到什么? – John3136 2012-02-07 04:15:20

+0

好像我需要列出所有HoulyEmployees,包括他们的employeeNumber,firstname,lastname,hoursworked等。如果我循环访问数组,首先我如何列出所有这些东西,其次我如何才能获得HOurlyEmployees,而不是薪水或Commision – kel 2012-02-07 18:22:23

回答

0

这里是一个开始:

import java.math.BigDecimal; 
import java.util.*; 
abstract class Employee { 
    Employee(String name) { 
     this.name = name; 
    } 
    final String name; 
} 
class SalariedEmployee extends Employee { 
    SalariedEmployee(String name, BigDecimal salary) { 
     super(name); 
     this.salary = salary; 
    } 
    public String toString() { 
     return getClass().getSimpleName() + " " + name + " " + salary; 
    } 
    final BigDecimal salary; 
} 
class HourlyEmployee extends Employee { 
    HourlyEmployee(String name, BigDecimal hourlyRate) { 
     super(name); 
     this.hourlyRate = hourlyRate; 
    } 
    public String toString() { 
     return getClass().getSimpleName() + " " + name + " " + hourlyRate; 
    } 
    final BigDecimal hourlyRate; 
} 
class CommissionEmployee extends Employee { 
    CommissionEmployee(String name, BigDecimal percentage) { 
     super(name); 
     this.percentage = percentage; 
    } 
    public String toString() { 
     return getClass().getSimpleName() + " " + name + " " + percentage + "%"; 
    } 
    final BigDecimal percentage; 
} 
class Manager { 
    public String toString() { 
     return Arrays.asList(employees).toString(); 
    } 
    Employee[] employees = new Employee[] { new SalariedEmployee("joe", BigDecimal.valueOf(4567.89)), 
      new HourlyEmployee("mary", BigDecimal.valueOf(12.34)), 
      new CommissionEmployee("bob", BigDecimal.valueOf(12.34)) }; 
} 
public class Main { 
    public static void main(String[] args) { 
     System.out.println(new Manager()); 
    } 
}