Java的方法与功能
这个问题在这里已经有了答案:
在我看来这个图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)的第三部分涉及面向主题的编程,其中对象(被调用方法)的行为不仅取决于对象状态,而且取决于调用(或观察)对象的主体。 但是这实际上超出了你的问题的范围。
那么方法和函数之间有一点区别。
函数只是一个代码,您可以随时通过名称调用它,也可以将参数也称为参数传递给它,并且还可以从任何函数(即函数的返回值)中获取结果。
但是一个方法是一个由其名称调用的代码,但它与任何对象相关联。 你也可以传递参数给方法,你也可以从方法中获得一些返回值,但事情是它们总是会与某些对象关联。
EDITED
Java是面向对象的,在大多数情况下,不能让Java代码在没有类的情况下运行,但是在C ++中,您可以让代码在没有类的情况下运行。 所以在Java中将会有类和代码将被写入类中,所以它们被称为方法而不是函数,因为它们将与对象相关联。
但在C ++中,可以通过显式传递值来调用一些函数。
简而言之,可以说,方法是一个与对象相关的函数。
这不禁让人想起很多不必要的戏剧。 “方法”只是一个肯定的名称,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)
链接地址: http://www.djcxy.com/p/17309.html
上一篇: Java's methods vs. functions
下一篇: In C++, what is the difference between a method and a function