有人能简单解释OOP环境中的方法与函数吗?


当前回答

我不是专家,但我知道:

函数是C语言术语,它指的是一段代码,函数名将是使用此函数的标识符。方法是OO术语,通常它在函数参数中有一个this指针。您不能像C那样调用这段代码,您需要使用对象来调用它。调用方法也不同。这里调用含义来查找这段代码的地址。C/C++,链接时间将使用函数符号来定位。目标-C不同。调用表示使用数据结构查找地址的C函数。这意味着在运行时一切都是已知的。

其他回答

让我们不要过于复杂化,这应该是一个非常简单的答案。方法和功能是一样的。当函数在类外部时,可以将其称为函数,当函数在一个类内部编写时,可以称其为方法。

“method”是“function”的面向对象词。这几乎就是它的全部(即,没有真正的区别)。

不幸的是,我认为这里的很多答案都在延续或推进一种观点,即存在一些复杂而有意义的差异。

真的-没有那么多,只是对同一件事用不同的词。

[后期添加]


事实上,正如BrianNeal在对这个问题的评论中指出的那样,C++标准在引用成员函数时从不使用“方法”一词。有些人可能认为这表明C++并不是真正的面向对象语言;然而,我更倾向于将其作为一种迹象,即一群相当聪明的人并不认为有特别强烈的理由使用不同的术语。

我知道还有很多人已经回答了,但我发现以下是一个简单而有效的单行答案。虽然它看起来并没有比这里的其他答案好很多,但如果你仔细阅读它,它提供了你需要了解的关于方法与函数的一切。

方法是具有定义的接收器的函数,在OOP术语中,方法是对象实例上的函数。

方法和功能之间有明显的区别:

函数是一段独立的代码,您可以在任何地方调用它,只需在给定的参数中提及它的名称,就像在大多数过程语言(如C++和python)中一样。虽然

方法与对象具体相关,这意味着您只能在调用方法之前使用点(.)符号提及它的对象,就像在C#和java等纯面向对象语言中一样。

方法位于对象上或在类中是静态的。函数独立于任何对象(并且在任何类之外)。

对于Java和C#,只有方法。对于C,只有函数。

对于C++和Python,这取决于您是否在类中。但在基本英语中:

功能:独立功能。方法:做某事的一种方式,它有不同的方法或方法,但与同一方面(也称为类)相关。