Java的方法与函数

我刚刚决定将我的MATLAB编程技巧与一些更加一致和严格的Java编码相结合。 因此,我希望这不是一个太天真的问题。

我想知道Java是否有任何真正的原因可以解释为什么Java将函数称为methods而不是functions ,就像许多其他程序语言一样。

是不是因为内部OOP Java的性质与C/C++等过程语言相比? 或者还有其他重要(或微妙)原因吗?

提前致谢。

在我看来这个数字http://www.jot.fm/issues/issue_2008_03/article4/images/figure2.gif

一维,二维和三维方法调度

来自http://www.jot.fm/issues/issue_2008_03/article4/有助于理解OO和程序编程之间的主要区别之一。 基本上这个想法就是这样

程序编程仅提供将计算单元与名称相关联的一个维度。 这里,过程调用或名称直接映射到过程实现。 在图中,调用m1除了调用过程m1的唯一实现之外别无选择

面向对象编程为程序编程增加了名称解析的另一个维度。 除了方法或过程名称之外,在查找方法时,消息分派还会考虑消息接收者。 在图2b中,我们看到方法m1的两个实现。 选择适当的方法不仅取决于消息名称m1,还取决于实际消息的接收者,这里是Ry

图(c)的第三部分涉及面向主题的编程,其中对象的行为(被调用的方法)不仅取决于对象状态,而且还取决于调用(或观察)它的主体。 。 然而,这实际上超出了您的问题的范围。

那么方法和函数之间有一点区别。

函数只是一个代码,您可以随时通过其名称调用它,您可以将参数也称为参数传递给它,您也可以从任何函数获取结果,即返回函数的值。

但是方法是由其名称调用的代码,但它与任何对象相关联。 您也可以将参数传递给方法,也可以从方法中获取一些返回值,但事情是它们总是与某些对象相关联。

EDITED

Java是面向对象的,在大多数情况下,您不能让Java代码在没有类的情况下运行,但是在C ++中,您可以在没有类的情况下运行代码。 所以在Java中会有类和代码写在类中,所以它们被称为方法而不是函数,因为它们将与对象相关联。

但是在C ++中,您可以通过显式传递值来调用某些函数。

简单来说,方法是一个与对象相关的函数。

在这一个不禁思考了很多不必要的戏剧。 “方法”只是一个名称,Java正好使用,对于可能需要或可能不需要参数的子程序,可能会或可能不会返回值?

例如,有效的“方法”可能如下,没有达到OO纯度,“function”的规范定义等; 以下两者可能也可能不会在执行中使用对象的当前“状态”(实例变量值):

 // kind of a function, returns a value public int calculateStuff(int param1) // more of a procedure, presumably just "does stuff", returns nothing public void doStuff(int param1) 

他们是一样的。 C ++通常将它们称为函数。 Java通常将它们称为方法。

方法通常与类相关联。

你偶尔会听到“课堂function”,这只是一种方法。

没关系,如果你给他们打电话,人们会知道你在谈论什么。