我刚刚决定将我的MATLAB编程技巧与一些更一致和严格的Java编码相结合。因此,我希望这不是一个太天真的问题。
我想知道Java是否有任何真正的理由将Java称为methods
而不是functions
,正如许多其他程序语言所做的那样。
是否因为内部OOP
Java的性质与C/C++
等过程语言相比较?还是有其他重要(或微妙)原因?
提前致谢。
答案 0 :(得分:4)
方法和功能之间存在一点差异。
函数只是一个代码,您可以随时通过其名称调用它,您可以将参数也称为参数传递给它,您也可以从任何函数获取结果,即函数的返回值。
但是方法是由其名称调用的代码,但它与任何对象相关联。您也可以将参数传递给方法,也可以从方法中获取一些返回值,但事情是它们总是与某些对象相关联。
EDITED
Java 是面向对象的,在大多数情况下,您不能让Java代码在没有类的情况下运行,但是在C ++中,您可以在没有类的情况下运行代码。所以在Java中会有类和代码写在类中,因此它们被称为方法而不是函数,因为它们将与对象相关联。
但是在C ++中,你可以通过显式传递值来调用一些函数。
简单来说,方法是一个与对象相关的函数。
答案 1 :(得分:3)
在我看来这个数字http://www.jot.fm/issues/issue_2008_03/article4/images/figure2.gif
来自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通常将它们称为方法。
方法通常与班级相关联。
你偶尔会听到“课堂功能”,这只是一种方法。
没关系,如果你打电话给他们,人们会知道你在说什么。