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


当前回答

假设函数是一个代码块(通常有自己的作用域,有时也有自己的闭包),它可以接收一些参数,也可以返回结果。

方法是由对象拥有的函数(在某些面向对象的系统中,更正确的说法是由类拥有)。被对象/类“拥有”意味着您通过对象/类引用方法;例如,在Java中,如果要调用对象“door”拥有的方法“open()”,则需要编写“door.open()”。

通常,方法还会获得一些额外的属性,描述它们在对象/类中的行为,例如:可见性(与面向对象的封装概念相关),它定义了可以从哪些对象(或类)调用方法。

在许多面向对象的语言中,所有的“函数”都属于某个对象(或类),因此在这些语言中没有不是方法的函数。

其他回答

类是一些数据和函数的集合,可以选择使用构造函数。

在创建该特定类的实例(副本、复制)时,构造函数初始化该类并返回一个对象。

现在类成为对象(没有构造函数)&函数在对象上下文中称为方法。

所以基本上

类<==new==>对象

函数<==new==>方法

在java中,构造函数的名称通常与类名相同,但实际上,构造函数类似于实例块和静态块,但具有用户定义的返回类型(即class类型)

而类可以具有静态块、实例块、构造函数、函数对象通常只有数据和方法。

函数是一组可以用来处理数据的逻辑。

而Method是一个用于处理其所属对象的数据的函数。因此,从技术上讲,如果您有一个与您的类不完全相关但在类中声明的函数,那么它不是一个方法;这被称为糟糕的设计。

在OO世界中,这两个词通常用来表示同一件事。

从纯数学和CS的角度来看,当使用相同的参数(f(x,y)=(x+y))调用函数时,函数将始终返回相同的结果。另一方面,方法通常与类的实例相关联。尽管如此,大多数现代OO语言在很大程度上不再使用术语“函数”。许多静态方法可以很像函数,因为它们通常没有状态(不总是真的)。

函数是主要属于面向过程编程的概念,其中函数是一个可以处理数据并返回值的实体

方法是面向对象编程的概念,其中方法是类的成员,该类主要对类成员进行处理。

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

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

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

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