Java的方法与功能

fpe*_*fpe 12 java methods function

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

我想知道Java是否有任何真正的原因可以像其他许多程序语言那样引用函数methods而不是函数functions.

是因为内部OOPJava的性质与程序语言相比C/C++如何?还是有其他重要(或微妙)原因?

提前致谢.

gpr*_*our 5

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

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

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

已编辑

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

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

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

  • *Java 是真正面向对象的* 我不会这么说。Java有静态方法(实际上每个Java程序的入口点都是一个静态方法),它们属于类,而不属于对象。Java 是一种命令式、过程式语言,可以(并且应该)以面向对象的方式使用,但它绝不是一种纯粹的面向对象语言 (3认同)

Sin*_*ico 3

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

一维、二维、三维方法调度

来自http://www.jot.fm/issues/issue_2008_03/article4/ 有助于理解面向对象和过程编程之间的主要区别之一。基本上的想法是

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

尽管

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

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