2012-04-14 84 views
0

我知道在Java中,尤其是當你做實地隱藏,你可以訪問祖父母的狀態變量:的Java:訪問祖父母的狀態

((Grandparent) this).hiddenField 

爲什麼同樣的理由不是方法調用的情況下?你可以調用super.method(),爲什麼不是其他祖先的呢?

+1

呃...你有沒有試過這個.Grandparent.method()? – j13r 2012-04-14 15:10:41

+0

祖父母是一個類名,它不是一個實例字段... – Bober02 2012-04-14 15:20:12

+0

我認爲你正在尋找http://stackoverflow.com/questions/586363/why-is-super-super-method-not-allowed-in -java – j13r 2012-04-14 15:33:11

回答

1

實例方法沒有字段隱藏的類比。實例方法與實例字段或靜態方法不同,它們可以動態調度,這是一個完全不同的故事。從某種意義上講,重寫的方法不再是「那裏」,唯一的例外是在重寫的方法體內,並且只有方法被直接覆蓋。

1

因爲方法是虛擬的,而字段不是。 目標是調用相同的方法,無論參考的類型如何:

(Grandparent) this).method()總是等於。