2012-01-24 22 views
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())在内的整个声明?

+0

'.doSomething()'没有实例就没有意义。 – cheeken

回答

0

doSomething()是方法调用,foo是该方法被调用on/from的实例。

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

1

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

+0

对不起,但它是如何回答这个问题的? – Bhushan

0

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

0

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

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