// Subdivision это тот самый интерфейс "Подразделение"
int getFoodCost(Subdivision subdivision) {
// допустим, что на каждого человека тратится по 300 руб в день
return subdivision.numberOfEmployers() * 300;
}
В результате мы получаем метод, который может работать абсолютно с любыми классами, которые реализуют интерфейс Subdivision. А вот если бы вы не использовали интерфейс, а просто добавили бы в каждый класс по методу numberOfEmployers(), то для каждого класса пришлось бы писать свою версию getFoodCost().
Конкретно в моём примере метод getFoodCost не является частью интерфейса и реализующих его классов, это некий внешний метод
interface Subdivision {
int numberOfEmployers();
}
class Workshop implements Subdivision {
@Override
public int numberOfEmployers() {
// тут должна быть реализация интерфейса
}
}
class Department implements Subdivision {
@Override
public int numberOfEmployers() {
// тут должна быть реализация интерфейса
}
}
class Service {
public static void main(String[] args) {
Workshop workshop1 = new Workshop();
Department department1 = new Department();
// some code
int sum1 = getFoodCost(workshop1);
int sum2 = getFoodCost(department1);
}
public static int getFoodCost(Subdivision subdivision) {
return subdivision.numberOfEmployers() * 300;
}
}