在面向对象的编程中,方法调用的对象部分是什么?

时间:2012-01-24 20:32:59

标签: java definitions

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

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

如果我想致电doSomething,我需要一个Example的实例:

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

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

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

5 个答案:

答案 0 :(得分:4)

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

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

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

foo.bar().baz()

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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