2012-07-24 40 views
-1

我有一個延伸活動,像這樣一類:是超級的onCreate(0稱爲不具有的onCreate擴展類()本身

public abstract class AndroidGame extends Activity implements Game 

這個類有一個像這樣的onCreate()方法:

public void onCreate(Bundle savedInstanceState) { 
// I do stuff here 
} 

然後我作出這樣的擴展AndroidGame像這樣其他類:

public class ScatmanNomGame extends AndroidGame { 
    // The loading screen will load all the assets of our game 
    @Override 
    public Screen getStartScreen() { 
     return new LoadingScreen(this);  
    }  
} 

好了,這裏是我的問題我的defaul t開始活動(在我的清單文件中)設置爲首先加載ScatmanNomGame。在啓動我的程序後,啓動器的活動是ScatmanNomGame。但請注意,ScatmanNomGame沒有onCreate()方法。簡單地開始這個活動(ScatmanNomGame)稱它爲超類的onCreate方法?

+0

你通過運行這段代碼觀察到了什麼? – user370305 2012-07-24 05:40:47

+0

您是否嘗試運行此程序?怎麼了?您所問的問題可以通過運行該程序得到解答。只需在'AndroidGame'活動的'OnCreate()'中添加一條Log語句並運行該程序,你就會知道它是否被調用。你不這麼認爲。這將工作嗎? – Abhilasha 2012-07-24 05:41:31

回答

1

是的,它會,讀繼承。
繼承允許子類的對象使用/訪問公共和受保護的字段和方法。 所以,如果你沒有重寫子類中的任何方法,並且對子類的對象調用相同的方法將會調用超類的方法。

+0

顯然,當活動開始時,onCreate()會自動調用。從某種意義上講,onCreate()就像創建對象時的構造函數一樣工作,除了創建活動時,它會自動完成。我不知道。如果您的活動實際上是活動的擴展,並且不包含onCreate()本身,則會調用super.onCreate()。我忽略了讓我按下運行按鈕的兩個答案,並且+1表示「是」的答案。我不知道onCreate()是Activity LifeCycle的一部分。 – Captainlonate 2012-07-24 06:07:12

+0

只是爲了在結論中進行一些編輯,onCreate不作爲構造函數。是的,當活動開始時,onCreate會自動調用,並且您可以在創建活動時添加您想要執行的代碼。 – jeet 2012-07-24 06:11:00

+0

當與一位同事交談時,我意識到我不明白當onCreate()被一個沒有明確實現onCreate()的類上的清單文件調用時所應用的繼承。我希望這可以幫助別人。 – Captainlonate 2012-07-26 16:55:08