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


当前回答

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

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

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

其他回答

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

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

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

[后期添加]


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

方法和函数之间有什么区别?

Python的官方文档是这样定义的(感谢@Kelly Bundy!):

作用向调用者返回某个值的一系列语句。它还可以传递零个或多个参数,这些参数可以在主体的执行中使用。另请参阅参数、方法和函数定义部分

方法在类主体内定义的函数。如果作为该类实例的属性调用,该方法将获取实例对象作为其第一个参数(通常称为self)。请参见函数和嵌套范围。


正方形是矩形,但并非所有矩形都是正方形。我解释世界的方式是,一个方法是一个函数,但并不是所有的函数都是方法。方法之所以独特,是因为它是一种特殊类型的函数,它也与类关联,并且可以访问类成员变量。

另请参见:

hasattr被称为方法,但它看起来像函数

函数或方法是一段命名的可调用代码,它执行一些操作并可选地返回一个值。

在C语言中,使用术语“函数”。Java和C#的人会说它是一个方法(在这种情况下,函数是在类/对象中定义的)。

C++程序员可能会将其称为函数或有时称为方法(取决于他们是在编写过程式C++代码还是以面向对象的方式使用C++,而且只有C/C++的程序员可能会称其为函数,因为C/C++文献中很少使用术语“方法”)。

你只需调用函数的名称,

result = mySum(num1, num2);

您可以通过首先引用其对象来调用方法,

result = MyCalc.mySum(num1,num2);

函数和方法之间主要区别的非常一般的定义:

函数在类外部定义,而方法在类内部和类的一部分定义。

TL;博士

函数是一段要运行的代码。方法是对象内的函数。

函数示例:


function sum(){
  console.log("sum")l
}

方法示例:

const obj = {
a:1,
b:2,
sum(){
  }
}

所以这就是为什么我们说函数中的“this”关键字不是很有用,除非我们将其与call、apply或bind一起使用。。因为call、apply、bind将作为对象内部的方法调用该函数==>基本上它将函数转换为方法