有人能简单解释OOP环境中的方法与函数吗?
当前回答
函数-一段独立代码中的函数,它包含一些逻辑,必须独立调用,并在类外定义。
方法-方法是一段独立的代码,在引用某个对象时调用,并在类中定义。
其他回答
方法是类的函数。用正常的术语来说,人们在各处交换方法和功能。基本上,您可以将它们视为相同的东西(不确定全局函数是否称为方法)。
http://en.wikipedia.org/wiki/Method_(计算机科学)
根据我的理解,方法是可以在类上执行的任何操作。它是编程中使用的通用术语。
在许多语言中,方法由函数和子程序表示。大多数语言用于这些的主要区别是,函数可能会返回一个值给调用者,而子程序可能不会。然而,许多现代语言只有函数,但这些函数可以选择不返回任何值。
例如,假设你想描述一只猫,你希望它能够打哈欠。您将使用Yawn方法创建一个Cat类,这很可能是一个没有任何返回值的函数。
OOP是一种设计理念。在这种情况下,“方法”是一个“动作”,一个对象的“行为”,一种“操作”,是一个对象所做的事情。右键单击鼠标对象是一个动作。在实现OOP设计的几种语言中,这种行为被称为“方法”。“函数”仅与C和Pascal等过程语言相关,与OOP哲学无关,即使在技术上实现与方法类似。“函数”是程序语言(如C)中的一块代码,它有一个定义的目的,一个独立的和定义的功能,也可以返回结果。“过程”也是一个不返回结果的函数,但它只是技术上的区别。
方法与功能的区别
在Microsoft上阅读此文档
包含可执行代码的成员统称为类的函数成员。上一节描述了方法,它们是函数成员的主要类型。本节介绍C#支持的其他类型的函数成员:构造函数、财产、索引器、事件、运算符和终结器。
所以方法是函数的子集。每个方法都是一个函数,但不是每个函数都是一种方法,例如,构造函数不能被称为方法,但它是一种函数。
“method”是“function”的面向对象词。这几乎就是它的全部(即,没有真正的区别)。
不幸的是,我认为这里的很多答案都在延续或推进一种观点,即存在一些复杂而有意义的差异。
真的-没有那么多,只是对同一件事用不同的词。
[后期添加]
事实上,正如BrianNeal在对这个问题的评论中指出的那样,C++标准在引用成员函数时从不使用“方法”一词。有些人可能认为这表明C++并不是真正的面向对象语言;然而,我更倾向于将其作为一种迹象,即一群相当聪明的人并不认为有特别强烈的理由使用不同的术语。