Java方法与函数

时间:2013-04-25 19:50:23

标签: java function methods

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

我想知道Java是否有任何真正的理由将Java称为methods而不是functions,正如许多其他程序语言所做的那样。

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

提前致谢。

4 个答案:

答案 0 :(得分:4)

方法和功能之间存在一点差异。

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

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

EDITED

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

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

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

答案 1 :(得分:3)

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

one, two and three dimensional method dispatch

来自http://www.jot.fm/issues/issue_2008_03/article4/

帮助理解OO和程序编程之间的主要区别之一。 基本上这个想法是

  

程序编程只提供一个关联a的维度   带名字的计算单位。这里是程序调用或名称   直接映射到过程实现。在图a中呼叫   m1别无选择,只能调用唯一的实现   程序m1

,而

  

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

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

答案 2 :(得分:1)

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

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

// 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)

答案 3 :(得分:0)

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

方法通常与班级相关联。

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

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