考慮以下2種方法:OO繼承問題
class A{
void Method1(){
if(!something) return;
DoX();
DoY();
DoZ();
}
class B{
void Method2(){
if(!something) return;
DoX();
DoY();
DoP();
}
}
顯然是一個超類可以寫,以避免乾燥原理:
class Super{
virtual void Method(){
if(!something) return; //problem...
DoX();
DoY();
}
}
class A:Super{
override void Method(){
inherited Method();
DoZ();
}
}
class B:Super{
override void Method(){
inherited Method();
DoP();
}
}
的問題是什麼檢查哪裏會跑!在第一個例子中,在第二個例子中,它將超出超類的方法,但在派生類中執行DoZ()或DoP();
我的問題:解決這類問題的最好方法是什麼?這使我手中的一個正在父類的方法,返回布爾
virtual bool Method(){ if(!something) return false;}
override bool Method(){ if(!inherited Method()) return;}
這是最好的解決辦法的功能?