2013-04-28 80 views
1

我有一個名爲'Quad'的自定義類,它創建了一個紋理四元組,用作我的2D OpenGL ES 2.0遊戲中的一個精靈。無法訪問對象子類的變量? (Java/Android)

public class Quad(){ 

//Quad creation stuff here 

} 

然後,我有一個單獨的子類(即在不同的文件 - 不是一個內部類)

public class hero extends Quad(){ 

//Variables relating specifically to this character 
int heroX = 0; 
int heroY = 0; 

} 

創建我的對象,像這樣:

Quad hero = new Hero(); 

不過,如果我嘗試要訪問'heroX'和'heroY'變量,我什麼也沒得到.....

所以我會試試

hero.heroX 

但上面沒有選擇這個變量。

它會。但是,找到位於我的Quad類中的變量。但我會認爲,通過將我的Quad類擴展到我的Hero類中,它們可以通過我的對象獲得。

有人可以請解釋我的思維錯誤在哪裏以及如何訪問這兩個變量?由於

回答

1

你的變量heroQuad類型的,不是類型Hero,因此編譯器只知道它是一個Quad。如果您想訪問Hero方法,請使用特定的子類型。

+0

如果他他使用訪問器..我不認爲這是問題。也許在其他語言中。如果不是,我的答案是非常錯誤的。 – 2013-04-28 20:28:43

+0

@LewsTherin - 正確的答案是訪問和正確的類型都是必需的。然而,Java默認情況下是私有的(所以同一個包中的任何類都可以讀取這些變量),而不是私有的。 – ianhanniballake 2013-04-28 20:42:08

+0

是@ianhanniballake,我剛剛宣佈它是英雄,所以現在我說英雄英雄=新英雄();它工作正常 - 做到這一點我可以訪問來自Quad類和Hero類的所有方法和變量 - 爲什麼會這樣?當然,如果我將英雄聲明爲Quad(),那麼當我創建對象時,將它創建爲一個新的「英雄」(它也是一個Quad) - 編譯器當然知道它是一個英雄以及一個四?如果不是的話,那麼說'四人英雄=新英雄'(這是我在Java代碼中多次看到過的東西)這個問題......困惑! : -/ – Zippy 2013-04-28 20:44:46