考虑以下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;}
这是最好的解决办法的功能?