2012-01-24 43 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參數隱式傳遞。