Это больше вопрос который должен иметь возможность вызвать метод, а не сколько объектов он получает доступ и т.д.
static
поля и метод принадлежит к класса вместо конкретного например. Таким образом, независимо от того, сколько раз вы создаете экземпляр Employee
, будет ровно один int employeeCount
. Ссылка каждого сотрудника на поле employeeCount
возвращается в то же место. Пользуясь полем employeeCount, вы уже получаете это, это просто вопрос применения той же логики к методам.
Поставив getEmployeeCount()
статический, вы говорите, что не только любой сотрудник может его назвать, сам класс Employee
может вызвать метод; вам не нужен экземпляр для вызова метода.
Employee.getEmployeeCount(); //Valid, because getEmployeeCount() is static
Employee.name; //Invalid (non-static reference from static context) because *which* employee's name?
Поскольку это только доступ к статическим полям, это имеет смысл. Независимо от того, какой экземпляр вы могли бы назвать, он возвратит то же значение. Рассмотрим код:
Employee a = new Employee();
Employee b = new Employee();
System.out.println(a.getEmployeeCount()); //2
System.out.println(b.getEmployeeCount()); //2
System.out.println(Employee.getEmployeeCount()); //2
Employee c = new Employee();
System.out.println(a.getEmployeeCount()); //3
System.out.println(b.getEmployeeCount()); //3
System.out.println(c.getEmployeeCount()); //3
System.out.println(Employee.getEmployeeCount()); //3
Там ничто не мешает вам делать getEmployeeCount()
нестатическая. Однако, поскольку вообще не имеет значения, к какому экземпляру вы вызываете метод (и на самом деле вам даже не нужен экземпляр), удобство и хорошая практика делают метод static
.
Если он нестационарен и единственное место, где значение обновляется, находится в конструкторе, как показано в вашем коде, тогда значение employeeCount всегда будет 1, что, вероятно, не является тем, что вы после. – sn00k4h
Это статичный, поскольку он не связан с конкретным экземпляром «Сотрудник». – August
'employeeCount', являющийся« отдельным объектом », не является такой же суммой, как и все экземпляры класса как поля самого класса или поля, отличного от каждого экземпляра класса. – J0e3gan