Java

Для чего вообще используется method overloading?

Приведу пример, более понятный вам.
Представьте себе, что вы - секретарь в приемной комиссии университета. Или вахтер на вахте. Или писарь в штабе на фронте.
И у вас есть метод "ЗаписатьФИОчеловекаВжурналПосещений", который на входе принимает три параметра (фамилия, имя, отчество) и который берет эти части ФИО записывает в журнал посещений.
Пришел, к примеру, Пупкин Василий Иванович, вы его успешно записали. Потом пришел Иванов Иван Иванович. Он тоже был успешно записан в журнал посещений. Потом пришла Сидорова Анна Сидоровна, она тоже была успешно записана в журнал.
Все было нормально, пока к вам на вахту не пришел Силвестер Сталонне. Да, да, без отчества, просто фамилия и имя, отчества у Сталонне нет. Если вы попытаетесь использовать свой "стандартный" метод, который принимает три параметра, у вас замкнет в голове короткое замыкание и в программе получится какой-нибудь access violation at memory 0x12345678.
Потом представим, что к вам пришел Ремарк Эрих Мария. Нет, это не фамилия, имя, отчество, несмотря на то, что это три части полного имени, это фамилия, имя1 и имя2. У них так принято называть людей. Тут у вас будет тоже короткое замыкание в программе с последующим выпадением в синий экран смерти, если не использовать overloaded методы.
Потом чисто теоретически к вам пришел какой-нибудь Abū ʿAlī al-Ḥusayn ibn ʿAbd Allāh ibn al-Ḥasan ibn ʿAlī ibn Sīnā (знаменитый арабский врач), от такого имени ваш алогритм вообще треснул еще на этапе приема информации.
Так вот, overloaded-методы предназначены для того, чтобы вы, как записыватель ФИО в журнал посещений, могли спокойно записать любого человека, который чисто теоретически может появится на вашей вахте.
Без использования overloaded-методов вы можете записать только тех, у кого полное имя состоит только из Ф, И, Щ. А всякие китайцы, арабы, турки, жители Северного Кавказа у вас вызовут исключительную ситуацию и приведут к закрытию вахты или диссимиляции журнала посещений.
Рус Адельшин
Рус Адельшин
80 143
Лучший ответ
первое - это чтобы закидывать разные агрументы в один метод и он их по разному отрабатывал
второе - у наследников одного класса перегружен базовый метод по разному, и тогда можно переключаться между кусками кода переключая классы безотносительно основного кода (паттерн стратегия)
B.
Bomj .
17 648
чтобы 5 разных методов могли иметь одно и то же имя если у них разное количество аргументов. например конструкор без аргументов чтоб дефалтовые значения устанавливал и с 3 аргументами чтоб можно было дефалтовые значения менять.
R*
Raha ********
13 437
Евгений Кириленко то есть просто избежать нагромождения методов, и вместо этого дергать один и тот же с разными параметрами?