2011-07-08 75 views
0

有時,派生類應始終調用基本實現。在子類特定的代碼之前或之後,我應該在哪裏放置調用語句。例如:哪裏可以在派生類中調用基類的實現?

boolean foo(T x) { 
    super.foo(x); 
    ....blabla...; //< derived calss-specific code 
    return true; 
} 

OR

boolean foo(T x) 
{ 
    ....blabla...; //< derived calss-specific code 
    return super.foo(x); 
} 

如何使不同情況正確的決定?

在此先感謝。

+0

取決於實施。 –

回答

3

答案取決於超類方法的作用以及子類方法的作用。

如果超類所做的工作必須先完成,那麼請先進行超級調用。如果超級類別所做的工作必須在之後完成,請在超級通話之後進行。如果一些工作必須在超類方法之前完成,而另一些則在之後進行。

如果順序無關緊要,通常的方法是在開始時調用超類方法。

+0

直截了當 – Asahi

+0

非常感謝。但對於我來說,看起來很難確切地說明超級班做了什麼。 – jit

+0

@jit - 在這種情況下,你需要找出答案。超類的文檔通常會附帶示例或指導,說明如何使用它。如果不是,請嘗試獲取源代碼並找出自己。最糟糕的情況是,正如JB所建議的那樣,在派生方法開始時通常會安全地調用超類。 – RivieraKid

相關問題