有人能简单解释OOP环境中的方法与函数吗?
当前回答
函数是一个数学概念。例如:
f(x,y) = sin(x) + cos(y)
表示函数f()将返回第一个参数的sin加上第二个参数的余弦。这只是数学。碰巧sin()和cos()也是函数。函数有另一个属性:对具有相同参数的函数的所有调用都应返回相同的结果。
另一方面,方法是与面向对象语言中的对象相关的函数。它有一个隐式参数:被作用的对象(及其状态)。
因此,如果对象Z具有方法g(x),则可能会看到以下内容:
Z.g(x) = sin(x) + cos(Z.y)
在这种情况下,传入参数x,与前面的函数示例相同。然而,cos()的参数是位于对象Z内部的值。Z和位于对象Z内的数据(Z.y)是Z的g()方法的隐式参数。
其他回答
函数是一个数学概念。例如:
f(x,y) = sin(x) + cos(y)
表示函数f()将返回第一个参数的sin加上第二个参数的余弦。这只是数学。碰巧sin()和cos()也是函数。函数有另一个属性:对具有相同参数的函数的所有调用都应返回相同的结果。
另一方面,方法是与面向对象语言中的对象相关的函数。它有一个隐式参数:被作用的对象(及其状态)。
因此,如果对象Z具有方法g(x),则可能会看到以下内容:
Z.g(x) = sin(x) + cos(Z.y)
在这种情况下,传入参数x,与前面的函数示例相同。然而,cos()的参数是位于对象Z内部的值。Z和位于对象Z内的数据(Z.y)是Z的g()方法的隐式参数。
方法是类的函数。用正常的术语来说,人们在各处交换方法和功能。基本上,您可以将它们视为相同的东西(不确定全局函数是否称为方法)。
http://en.wikipedia.org/wiki/Method_(计算机科学)
我不是专家,但我知道:
函数是C语言术语,它指的是一段代码,函数名将是使用此函数的标识符。方法是OO术语,通常它在函数参数中有一个this指针。您不能像C那样调用这段代码,您需要使用对象来调用它。调用方法也不同。这里调用含义来查找这段代码的地址。C/C++,链接时间将使用函数符号来定位。目标-C不同。调用表示使用数据结构查找地址的C函数。这意味着在运行时一切都是已知的。
方法是任何对象或类的成员。函数是独立的。
但在Javascript的情况下,函数和方法是可互换的。
函数是主要属于面向过程编程的概念,其中函数是一个可以处理数据并返回值的实体
方法是面向对象编程的概念,其中方法是类的成员,该类主要对类成员进行处理。