Ответы пользователя по тегу Системный анализ
  • Можете привести простой пример (код) полиморфизма на Java?

    Shockoway
    @Shockoway
    Интерфейс это перечень методов, а если чуть абстрагироваться, то это определенная модель поведения и когда какой-то класс реализует интерфейс это означает, что он гарантированно поддерживает описанную в интерфейсе модель поведения. Тем самым если у вас есть определенный набор разных классов (в данном случае это Цех и Отдел), но поддерживающих одну и ту же модель поведения (интерфейс Подразделение), то это позволяет вам взаимодействовать с ним не глядя на то, к какому конкретно классу они принадлежат.
    Сценариев применения на практике - множество, но вот вам простейший:
    Допустим у вас есть задача (взято с потолка) посчитать ежедневные затраты на питание всех сотрудников того или иного подразделения. В итоге получается, что нам нужен метод, который принимал бы в качестве аргумента экземпляр подразделения и возвращал бы конкретную сумму.
    // Subdivision это тот самый интерфейс "Подразделение"
    int getFoodCost(Subdivision subdivision) {
    	// допустим, что на каждого человека тратится по 300 руб в день
    	return subdivision.numberOfEmployers() * 300;
    }

    В результате мы получаем метод, который может работать абсолютно с любыми классами, которые реализуют интерфейс Subdivision. А вот если бы вы не использовали интерфейс, а просто добавили бы в каждый класс по методу numberOfEmployers(), то для каждого класса пришлось бы писать свою версию getFoodCost().
    Ответ написан