2014-02-10 3 views
0

Из предыдущего вопроса, который я задал в перечислениях, я смог понять, что такое перечисления на самом деле, но я все еще очень им новичок в практике. В моей лаборатории, он неожиданно говорит:Я правильно ли отформатирован класс Java enum?

«Создать класс диспетчера, который расширяет класс SalariedEmployee и содержит следующую информацию:

-The название отдела управляется этим сотрудником Создать пронумерованный класс с 4. -8 различных ведомств, такие как начисление заработной платы, производство, бухгалтерский учет, исследования, маркетинг и т.д.

-Количество работников (целое число) - значение в диапазоне от 1 до 100. "

ли это, кажется, вы, ребята, если это Я делаю это правильно? :

public enum Department { 
Payroll(10), Production(25), Accounting(30), Research(25), Marketing(7); 
//DepartmentName(numberOfEmployees) 
private int numberOfEmployees; 

private Department(int numberOfEmployees) { 
    this.numberOfEmployees = numberOfEmployees; 
} 

} 

Вы, ребята, думаете, что это действительно и достаточно? Очевидно, профессор точно знает, о чем он спрашивает, но из вашего собственного толкования я делаю это правильно?

Кроме того, если диапазон проверки суперструктора для int больше диапазона, чем тот, который я хочу для конкретного параметра для моего подкласса, просто выдал бы оператор if/else после того, как вызов super() будет достаточным? Например:

public SalariedEmployee(String name, String number, double salary, double deductions) { 
    super(name, number); 
    if (salary >= 40000.00 && salary <= 160000.00) { 
     this.yearlySalary = salary; 
    } else { 
     this.yearlySalary = 75000.00; 

НО в подклассе Я хочу диапазона быть между 40k-100k, так что я сделал это:

 public Supervisor(String name, String number, double salary, double deductions, int goals) { 
    super(name, number, salary, deductions); 
    if (salary >= 40000.00 && salary <= 100000.00) { 
     this.yearlySalary = salary; 
    } else { 
     this.yearlySalary = 75000.00; 
    } 

    } 

Это достаточно, чтобы переопределить привилегированную конструктора диапазон аргумента/спецификации ? Спасибо.

ответ

1

Я сомневаюсь, что учитель намеревается вас поместить количество сотрудников в перечисление. Дополнительная информация для перечислений - это обычно данные, которые не подлежат изменению. Количество сотрудников - это то, что часто меняется. Я считаю, что требование инструктора говорит о том, что класс, руководитель должен включать в себя свойство, которое гласит, сколько сотрудников находятся под управлением менеджера, что-то вроде этого:

public class Manager extends SalariedEmployee { 
    private Department department; 
    private Integer numEmployees; 
... 
} 

Поскольку это, как представляется, назначение, я не хочу дать слишком много кода, чем это. Удачи!

Я думаю, что вы спрашиваете во второй части вашего вопроса. После вызова super() в вашем конструкторе вы можете изменять значения любого из свойств, заданных методом super(), для разных значений. Я не уверен, что полностью понимаю, что вы пытаетесь сделать с диапазонами заработной платы, но я думаю, что вы дали достаточно информации, чтобы сказать, что того, что вы делаете, достаточно.

+0

О, спасибо, получилось, оцените его – Abdul

1

Все, что вам действительно нужно положить в конструкторе подкласса является

super(name, number, salary,deductions); 
if(salary>100000.00){ 
    this.yearlySalary=75000.00; 
} 

, потому что вы aleady проверки, если она находится в пределах от 40000 и 160000 в вашем суперкласса. Ваше перечисление выглядит правильно.

+0

О, получилось, имеет смысл, спасибо – Abdul

Смежные вопросы