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

doSomethingExampleクラスのメンバーです。
fooExampleクラスのインスタンスです。

于 2012-01-24T20:37:46.627 に答える
0

doSomething()はメソッド呼び出しであり、fooはメソッドがオン/から呼び出されているExampleのインスタンスです。

dot演算子は、オブジェクトfooを参照解除してから、fooのベースオブジェクトにアクセスします。この場合のオブジェクトはExampleです。次に、ExampleのメソッドdoSomething()にアクセスします。この場合、何かが実行されます。このシナリオでは、fooはクラスExampleからインスタンス化されたオブジェクトへの参照です。ドット演算子はfooを参照解除し、doSomething()は参照解除された基本クラスにアクセスしてメソッドを呼び出します。

于 2012-01-24T20:35:23.400 に答える
0

OOP 用語を管理する統治機関かどうかはわかりませんが、OOP のメソッドをクラスから独立させることはできません。インスタンス メソッドを呼び出すか、クラス (静的) メソッドを呼び出すかの 2 つの選択肢があります。つまり、メソッドを呼び出すエンティティ (クラスまたはオブジェクト) の名前とメソッド名を指定する必要があります。したがって、 foo.doSometghing() はメソッド呼び出しです。

于 2012-01-24T20:38:57.797 に答える
0

要するに、doSomething(). インスタンス メソッド(メソッドなど)の場合、 object でメソッドを呼び出したdoSomething()と言えます。すべてのインスタンス メソッドには、メソッドを呼び出したオブジェクトを表す という追加の引数があり、言語はそれをメソッドに自動的に渡します。this

doSomething()はメソッドであり、メソッドfooを呼び出したインスタンスです。 fooパラメータとして暗黙的に渡されthisます。

于 2012-01-24T20:40:45.613 に答える