2012-10-18 56 views
1

所以,我有一個抽象類充當父類,這是我想要發生的事情。我可以強制所有繼承課程的孩子繼承特定的方法嗎?

在抽象類:

public void run(){ 
    while(!booleanStatement){ 
     //do specific stuff here 
    } 
} 

在子類:

public class extends parentClass{ 
public void run(){ 
    //do child stuff here effected by the while loop above 
} 

有沒有辦法做到這一點?超()也許?

回答

11

肯定的:

所以,你可以通過執行類似擴展。只是定義一個額外的抽象方法:

public final void run(){ 
    while(!booleanStatement){ 
    doRun(); 
    } 
} 

public abstract void doRun(); 

在這種情況下的子類不能覆蓋run()被迫doRun()這確實循環內的工作提供一個實現。

+0

然後在子類中,我只是從我的doRun()方法調用run()? –

+0

你不應該在'doRun()'方法中調用它。 'doRun()'方法實現了應該在循環中執行的所有內容。從'doRun()'方法調用它可能會導致'StackOverflowException's –

+0

所以,只需要清楚這一點。孩子們被迫執行doRun()來處理他們的東西,但是隻需調用run,然後從循環內部調用doRun()? –

1

是的,調用super.run()將執行父級的方法。

public void run() { 
    super.run(); 
    //do child stuff 
} 
1

在抽象類:

public void run(){ 
    while(!booleanStatement){ 
     doStuff(); 
    } 
} 

protected abstract void doStuff(); 

在子類:

public class extends parentClass{ 
protected void doStuff() { 
    // do something 
} 

這樣的事情就行了。