有人能简单解释OOP环境中的方法与函数吗?
当前回答
函数或方法是一段命名的可调用代码,它执行一些操作并可选地返回一个值。
在C语言中,使用术语“函数”。Java和C#的人会说它是一个方法(在这种情况下,函数是在类/对象中定义的)。
C++程序员可能会将其称为函数或有时称为方法(取决于他们是在编写过程式C++代码还是以面向对象的方式使用C++,而且只有C/C++的程序员可能会称其为函数,因为C/C++文献中很少使用术语“方法”)。
你只需调用函数的名称,
result = mySum(num1, num2);
您可以通过首先引用其对象来调用方法,
result = MyCalc.mySum(num1,num2);
其他回答
“method”是“function”的面向对象词。这几乎就是它的全部(即,没有真正的区别)。
不幸的是,我认为这里的很多答案都在延续或推进一种观点,即存在一些复杂而有意义的差异。
真的-没有那么多,只是对同一件事用不同的词。
[后期添加]
事实上,正如BrianNeal在对这个问题的评论中指出的那样,C++标准在引用成员函数时从不使用“方法”一词。有些人可能认为这表明C++并不是真正的面向对象语言;然而,我更倾向于将其作为一种迹象,即一群相当聪明的人并不认为有特别强烈的理由使用不同的术语。
函数和方法之间主要区别的非常一般的定义:
函数在类外部定义,而方法在类内部和类的一部分定义。
方法位于对象上或在类中是静态的。函数独立于任何对象(并且在任何类之外)。
对于Java和C#,只有方法。对于C,只有函数。
对于C++和Python,这取决于您是否在类中。但在基本英语中:
功能:独立功能。方法:做某事的一种方式,它有不同的方法或方法,但与同一方面(也称为类)相关。
从历史上看,“方法”是不返回值的东西,而“函数”是返回值的,这两者之间可能存在着微妙的区别。每种语言都有自己的具有特殊含义的词汇。
在“C”中,“函数”一词表示程序例程。
在Java中,术语“函数”没有任何特殊含义。而“方法”是指构成类实现的例程之一。
在C#中,这可以翻译为:
public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function
但实际上,我再次重申,这两个概念实际上没有什么不同。如果你在关于Java的非正式讨论中使用“函数”一词,人们会认为你的意思是“方法”并继续下去。不要在有关Java的适当文档或演示中使用它,否则你会看起来很傻。
方法是任何对象或类的成员。函数是独立的。
但在Javascript的情况下,函数和方法是可互换的。