Java的方法与函数

2022-09-03 15:30:42

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

我想知道Java是否像许多其他程序语言那样将函数称为而不是作为,这有什么真正的原因。methodsfunctions

这是因为内部Java的性质与过程语言(例如?)相比吗?还是有任何其他重要(或微妙)的原因?OOPC/C++

提前致谢。


答案 1

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

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

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

编辑

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

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

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


答案 2

在我看来,这个数字 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和过程编程之间的主要区别之一。基本上这个想法是

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

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

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