Есть ли разница между методом и функцией? Или это просто два разных названия одного и того же?
Ответ
И да, и нет.
Если разбираться детально, то и функция и метод - это некоторый фрагмент кода, который можно вызвать по имени и, опционально, передать ему какие-либо параметры. С этой точки зрения различий никаких нет.
С другой стороны, функция обычно включает в себя все необходимое для своей работы, а взаимодействие с внешним миром осуществляет через входные и выходные параметры, а также возвращаемое значение (использование глобальных переменных скорее исключение, а чаще просто грубая ошибка). Кроме того, функция является самостоятельной единицей и может быть вызвана в любом месте программы без ограничений (ну почти, необходимость подключения библиотек и т.д. оставим в стороне).
Метод же для своей работы может использовать поля объекта и/или класса, в котором определен, напрямую, без необходимости передавать их во входных параметрах. Это похоже на использование глобальных переменных в функциях, но в отличие от глобальных переменных, метод может получать прямой доступ только к членам класса. Метод привязан к классу, если он статический, или объекту и может быть вызван только через этот класс или объект.
Из-за этих, весьма существенных, отличий метод и получил отдельный термин, в некотором смысле сокращение от "Метод (способ) взаимодействия с классом или объектом".
В целом, называть метод функцией не является ошибкой (обратное неверно), главное понимать концептуальные отличия этих терминов.
PS: Это касается любых языков программирования, поддерживающих концепцию объектно-ориентированного программирования.
Комментариев нет:
Отправить комментарий