14

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

我想知道 Java 是否像许多其他程序语言那样将函数称为 asmethods而不是 as是否有任何真正的原因。functions

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

提前致谢。

4

4 回答 4

5

好吧,方法和函数之间有一点区别。

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

但是一个方法是一个代码,它被它的名字调用,但它与任何对象相关联。您也可以将参数传递给方法,也可以从方法中获取一些返回值,但问题是它们将始终与某些对象相关联。

已编辑

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

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

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

于 2013-05-02T09:50:03.807 回答
3

在我看来这个数字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)的第三部分涉及面向主体的编程,其中对象(被调用的方法)的行为不仅取决于对象状态,还取决于调用(或观察)它的主体. 但是,这实际上超出了您的问题范围。

于 2013-05-02T09:56:43.910 回答
1

不禁想到这一部有很多不必要的戏剧性。“方法”肯定只是 Java 碰巧使用的一个名称,用于可能需要也可能不需要参数并且可能返回值也可能不返回值的子例程?

例如,有效的“方法”可能如下,而不涉及 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)
于 2013-05-02T10:13:27.833 回答
0

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

方法通常与一个类相关联。

您偶尔也会听到“类函数”,这只是一种方法。

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

于 2013-04-25T19:52:40.157 回答