Какова цель использования перегрузки метода? - PullRequest
0 голосов
/ 12 марта 2020

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

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Без использования каких-либо причудливых терминов, скажем, вы создаете API, и есть метод с именем crush, который, скажем, уничтожает или уничтожает любой параметр, который ему присвоен. Если вы будете следовать по своему пути, вам придется использовать по крайней мере три разных метода, каждый для int, float и char (в качестве примера я использую самые общие типы). Теперь, чем больше типов, тем больше методов вам придется создавать с таким большим количеством разных имен. Поэтому разработчик, использующий ваш API, должен будет запомнить так много разных имен для чего-то простого, как метод, который уничтожает его параметр. Насколько это сложно, это также гораздо менее читабельно, потому что, опять же, запоминание слишком большого количества имен для единственной функции (функции, как в задании).

Перегрузка метода используется не для всех, она предназначена для методов или функций, которые могут принимать разные типы данных в разных точках, но внутренне следуют постоянной процедуре или выполняют единичную вещь независимо от типа данных это передано.

Вы не будете писать одну версию print, которая принимает int в качестве параметра и возвращает его модуль, и другую версию print, которая принимает строку в качестве аргумента и печатает ее в стандартный вывод. Вы можете, но это не так, как это должно быть использовано.

1 голос
/ 12 марта 2020

Это в основном для того, чтобы быть в состоянии следовать относительно хорошо известному принципу разработки программного обеспечения, названному «Синтактика c Согласованность» из книги «Принципы языков программирования» Брюса Дж. МакЛеннана, в которой говорится следующее:

Подобные вещи должны выглядеть одинаково, тогда как

разные вещи должны выглядеть по-разному.

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

Конечно, вы можете неправильно использовать перегрузку. Если вы go пишете о функциях, выполняющих разные функции, используя перегрузку, чтобы дать им одно и то же имя, то вы стреляете себе в ногу.

...