Разница между методом и функцией

418
29 августа 2017, 10:51

Есть ли разница между методом и функцией? Или это просто два разных названия одного и того же?

Answer 1

И да, и нет.

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

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

Метод же для своей работы может использовать поля объекта и/или класса, в котором определен, напрямую, без необходимости передавать их во входных параметрах. Это похоже на использование глобальных переменных в функциях, но в отличие от глобальных переменных, метод может получать прямой доступ только к членам класса. Метод привязан к классу, если он статический, или объекту и может быть вызван только через этот класс или объект.

Из-за этих, весьма существенных, отличий метод и получил отдельный термин, в некотором смысле сокращение от "Метод (способ) взаимодействия с классом или объектом".

В целом, называть метод функцией не является ошибкой (обратное неверно), главное понимать концептуальные отличия этих терминов.

PS: Это касается любых языков программирования, поддерживающих концепцию объектно-ориентированного программирования.

Answer 2

В мире Джавы нет функций, есть только методы (ну и все остальное).

Answer 3

Это концептуальныe понятия той или иной среды программирования.

Answer 4

Ещё есть мнение, что функция возвращает значение, а метод нет. Это примерно так же как и с аргументами и параметрами.

READ ALSO
Как правильно работать с Google Tag Manager для Google Analitics?

Как правильно работать с Google Tag Manager для Google Analitics?

В общем нужно мне сделать реализацию Google Tag Manager я начал с этой статьи

275
Строка как массив символов

Строка как массив символов

Строка — это массив символовКак в java обратится к букве по индексу? Мой код:

478
Сложные условия в switch

Сложные условия в switch

Есть if, а есть switchЕсли использовать if то "или" будет записываться как ( условие | условие )

278