2012-01-24 4 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

ответ

4

В Java, вся target.method() рассматривается как часть вызова метода:

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

Это означает, что если у вас есть такой код:

foo.bar().baz() 

... тогда вся выражение является вызовом метода baz(), а цель вызова этого метода сама по себе является другим вызовом метода.

0

doSomething() - вызов метода, foo - пример примера, который метод вызывается в/из.

Оператор-точка де-ссылается на объект foo, а затем обращается к базовому объекту foo. Этот объект в этом случае является примером. Затем он обращается к методу примера doSomething(), и в этом случае что-то делается. В этом случае foo является ссылкой на объект, созданный из класса Example. Точечный оператор де-ссылки foo и doSomething() обращается к базовому классу с де-ссылкой, чтобы вызвать метод.

1

doSomething является членом класса Example.
foo - это экземпляр класса Example.

+0

простите меня, но как он отвечает на вопрос? – Bhushan

0

Я не знаю, является ли управляющий орган, контролирующий терминологию ООП, но так же, как и я, методы в ООП не могут быть независимыми от классов. У вас есть два варианта: вы вызываете метод экземпляра или метод класса (статический). Ether way, вам нужно указать имя объекта (класса или объекта), на который вы вызываете метод и имя метода. Таким образом, foo.doSometghing() - вызов метода.

0

Короче говоря, только doSomething(). Для метода экземпляра (например, ваш метод doSomething()), мы бы сказали, что вы называли метод на объекте. У каждого метода экземпляра есть дополнительный аргумент, называемый this, который представляет объект, на который вы вызвали метод, и язык передает его методу автоматически для вас.

doSomething() - метод, а foo - это экземпляр, на который вы вызвали метод. foo будет неявно передан как параметр this.