有人能简单解释OOP环境中的方法与函数吗?
当前回答
在C++中,有时使用方法来反映类的成员函数的概念。然而,最近我在《C++编程语言第四版》一书中发现了一个声明,第586页“派生类”
虚函数有时称为方法。
这有点令人困惑,但他说,有时,C++创建者倾向于将方法视为可以在对象上调用的函数,并且可以表现为多态。
其他回答
我知道还有很多人已经回答了,但我发现以下是一个简单而有效的单行答案。虽然它看起来并没有比这里的其他答案好很多,但如果你仔细阅读它,它提供了你需要了解的关于方法与函数的一切。
方法是具有定义的接收器的函数,在OOP术语中,方法是对象实例上的函数。
在OO世界中,这两个词通常用来表示同一件事。
从纯数学和CS的角度来看,当使用相同的参数(f(x,y)=(x+y))调用函数时,函数将始终返回相同的结果。另一方面,方法通常与类的实例相关联。尽管如此,大多数现代OO语言在很大程度上不再使用术语“函数”。许多静态方法可以很像函数,因为它们通常没有状态(不总是真的)。
在C++中,有时使用方法来反映类的成员函数的概念。然而,最近我在《C++编程语言第四版》一书中发现了一个声明,第586页“派生类”
虚函数有时称为方法。
这有点令人困惑,但他说,有时,C++创建者倾向于将方法视为可以在对象上调用的函数,并且可以表现为多态。
OOP是一种设计理念。在这种情况下,“方法”是一个“动作”,一个对象的“行为”,一种“操作”,是一个对象所做的事情。右键单击鼠标对象是一个动作。在实现OOP设计的几种语言中,这种行为被称为“方法”。“函数”仅与C和Pascal等过程语言相关,与OOP哲学无关,即使在技术上实现与方法类似。“函数”是程序语言(如C)中的一块代码,它有一个定义的目的,一个独立的和定义的功能,也可以返回结果。“过程”也是一个不返回结果的函数,但它只是技术上的区别。
“method”是“function”的面向对象词。这几乎就是它的全部(即,没有真正的区别)。
不幸的是,我认为这里的很多答案都在延续或推进一种观点,即存在一些复杂而有意义的差异。
真的-没有那么多,只是对同一件事用不同的词。
[后期添加]
事实上,正如BrianNeal在对这个问题的评论中指出的那样,C++标准在引用成员函数时从不使用“方法”一词。有些人可能认为这表明C++并不是真正的面向对象语言;然而,我更倾向于将其作为一种迹象,即一群相当聪明的人并不认为有特别强烈的理由使用不同的术语。