1

例如,假设我有一个这样定义的对象:

public class Example {
    public void doSomething() {
        // does something
    }
}

如果我想打电话doSomething,我需要一个实例Example

Example foo = new Example();
foo.doSomething();  // doSomething is executed

我的问题是,该行的哪一部分foo.doSomething();被正式认为是方法调用

它只是doSomething()部分还是包括对象(foo.doSomething())在内的整个语句?

4

5 回答 5

4

在 Java 中,整体target.method()被认为是方法调用的一部分:

http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#20448

这意味着如果你有这样的代码:

foo.bar().baz()

...那么整个表达式就是 的方法调用baz(),而该方法调用的目标本身就是另一个方法调用。

于 2012-01-24T20:36:23.867 回答
1

doSomething是 Example 类的成员。
foo是 Example 类的一个实例。

于 2012-01-24T20:37:46.627 回答
0

doSomething() 是方法调用, foo 是调用方法的 Example 的实例。

点运算符取消引用对象 foo,然后访问 foo 的基础对象。在这种情况下,该对象是示例。然后它访问 Example 的方法 doSomething() 在这种情况下完成了一些事情。在这种情况下,foo 是对从类 Example 实例化的对象的引用。点运算符取消引用 foo,doSomething() 访问取消引用的基类以调用该方法。

于 2012-01-24T20:35:23.400 回答
0

我不知道这是否是一个控制 OOP 术语的管理机构,但正如我所关心的那样,OOP 中的方法不能独立于类。您有两种选择,调用实例方法或类(静态)方法。以太方式,您需要给出您调用方法的实体(类或对象)的名称和方法名称。所以 foo.doSometghing() 是方法调用。

于 2012-01-24T20:38:57.797 回答
0

简而言之,只是doSomething(). 对于实例方法(例如您的doSomething()方法),我们会说您在 object 上调用了该方法。每个实例方法都有一个额外的参数,称为this,它表示您调用该方法的对象,并且语言会自动为您将其传递给该方法。

doSomething()是方法,foo是您调用该方法的实例。 foo将作为this参数隐式传递。

于 2012-01-24T20:40:45.613 回答