2017-08-04 48 views
0

有人可以解釋getName()getGrade()如何最終引用與createProgressReport()相同的項目而不被告知嗎?Java調用數組中沒有點表示法的方法

很明顯,createProgressReport被調用的數組中的項目與item.createProgressReport()。但似乎getName()getGrade()不會被告知在同一個項目上被調用,因爲沒有像item.getName()這樣的點符號。

getName()getGrade()方法如何自動「知道」哪個學生調用該方法。

for (Student item : myStudents) { 
    System.out.println(item.createProgressReport()); 

public String createProgressReport() { 
    String myString = getName() + " " + getGrade(); 

回答

8

createProgressReport在對象的實例上被調用。除非你另有編碼,否則在該方法中調用的任何方法都將在同一個對象上調用。

換一種方式,你的方法等效於:

String myString = this.getName() + " " + this.getGrade(); 
+0

當我打字答案的時候,把它打敗了。 – HumbleWebDev

+1

這不是一個關於速度的比賽。由OP決定他喜歡哪個答案。 –

+0

非常真實。很好,結局很好! – HumbleWebDev

2

對我來說,看來你是一類環境中工作。

在面向對象編程中,從類中的另一個方法調用方法通常會引用同一個實例。

可能無法執行此操作的語言是JavaScript或PHP,您需要引用$ this對象。

//php 
$this->methodName(); 

//JavaScript 
var self = this; 
self.methodName(); 

//java 
methodName(); //implied this when working within the context of the same class