현재 직원 데이터베이스를 생성하는 작업을하고 있습니다.자바 배열에 하위 클래스 추가 및 나중에 나중에 꺼내기
지금 당장은 Employee라는 추상 클래스를 만들었습니다. 그로부터 HourlyEmployee, SalaryEmployee 및 CommissionEmployee 하위 클래스가 있습니다.
모든 유형의 신입 사원을 생성 할 때 할당을 위해서는 모두 배열에 저장해야합니다. 그런 다음 나중에 직원 유형을 기반으로 직원을 나열 할 수 있어야합니다. addMemployee()에 전달되는 int는 다른 클래스의 내 기본 메소드에서 가져오고, 여기서 메뉴는 원하는 직원 유형에 대해 1-3을 선택하도록 요청합니다.
public class EmployeeManager{
private Employee[] employees;
private final int employeeMax = 100;
private int currentEmployees;
public EmployeeManager()
{
employees = new Employee[employeeMax];
currentEmployees = 0;
}
public void addEmployee(int ty, String fn, String ln, char mi, char gen, int empNum, boolean ft, double p)
{
if(ty == 1)
{
employees[currentEmployees] = new HourlyEmployee(fn, ln, mi, gen, empNum, ft, p);
currentEmployees++;
}
else if(ty == 2)
{
employees[currentEmployees] = new SalaryEmployee(fn, ln, mi, gen, empNum, ft, p);
currentEmployees++;
}
else if(ty == 3)
{
employees[currentEmployees] = new CommissionEmployee(fn, ln, mi, gen, empNum, ft, p);
currentEmployees++;
}
}
지금이이 배열 내에있는 직원의 유형을 식별하는 방법이다 그러나 무엇을 누락, 배열에 직원을 추가하기위한 잘 작동합니다. 나중에 Hourly, Salary 또는 Commission 유형의 모든 직원을 인쇄하는 메소드를 구현해야합니다. 배열 내의 직원을 어떻게 식별하여 나중에 해당 유형의 모든 직원 목록을 인쇄 할 수 있습니까?
public void listAll()
{
if(currentEmployees == 0)
{
System.out.println("\nNo Employees.");
}
else
{
for (int i=0; i < employees.length; i++)
{
if(employees[i] != null)
{
System.out.print(employees[i]);
}
}
}
}
이것은 모든 유형의 직원을 인쇄하는 제 방법입니다. 각 클래스에는 필자가 필요로하는 방식으로 출력 형식을 지정하는 toString() 메서드가 있습니다.
다형성과 구현 된 (오버라이드 된)'toString' 메소드 덕분에 각 인스턴스의 유형을 알 필요가 없습니다. –
각 인스턴스의 유형을 알 필요가없는 경우 어떻게 배열을 통해 HourlyEmployee 유형의 직원 만 인쇄 할 수있는 메서드를 작성할 수 있습니까? – Neonjoe
약간의 주제를 벗어난 제안 : employees.length를 확인하여 직원 수를 얻으려면 currentEmployees를 추적하고 구현할 필요가 없습니다. 동일한 정보를 저장하는 것은 서로 다른 두 가지 방법이 혼란을 야기합니다. 더 나쁜 것은 무언가가 잘못되어 증가하지 못하면 이제는 일치하지 않는다는 것입니다. 나는 그것을 한 가지 방법으로 만하는 것이 좋습니다. – Brandon