2017-04-26 42 views
-3

我爲一個學校作業寫了一個小小的Java遊戲,我們不得不點擊移動橢圓來獲得積分。 這裏有兩班我做:如何傳遞關鍵字'this'的對象?

磁盤類

package hw22; 
import processing.core.PApplet 
public class Disk{ 
static PApplet cv; 

Disk(PApplet canvas){ 
cv = canvas;} // end of disk constructor 
}// End of disk class 

的myGame類

package hw22; 
import processing.core.PApplet; 

public class myGame extends PApplet { 
//Some code 
Disk d = new Disk(this);. //here I am passing it myGame 
// Do some stuff 
}// End of myGame class 

所以我的問題是這樣的:

如果我傳遞磁盤class'構造函數myGame對象,當它期待一個PApplet對象時,爲什麼我的遊戲工作?日食不應該抱怨我傳遞錯誤類型的對象嗎?

+0

這是你的類'myGame',所以在這一行中'Disk d = new Disk(this);'你將'myGame'傳遞給Disk類構造器 – Smit

+3

'myGame'擴展'PApplet'。這裏沒有錯誤。 – EJP

+1

[Java Nuts and Bolts]中的相關教程(https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html)。 – Paul

回答

1

當你寫myGame延伸PApplet,這意味着myGame類的任何對象一個PApplet,可能與有規律PApplet對象沒有一些額外的功能。但是,無論何時您的代碼需要PApplet參考號,myGame參考值都會很好,因爲myGame a PApplet。並且因爲您在myGame類中使用this,所以this實際上是對myGame的引用。