我有一个名为DE. 它有 2 个实现的方法:a(), b(). 我想测试这个算法的一个变体,命名为DEa. 所以,我正在做DEa extends DE并且我覆盖了 method a()。还有另一种变体, algorithm DEb。我也在做同样的事情,DEb extends DE并且覆盖b(). 现在,我想测试 algorithm DEab。这是问题所在。如果我写DEab extends DEa它已经有覆盖的方法a(),但没有b(),我将不得不复制b()from DEb,这很丑陋且更难维护。
代码示例:
class DE { int i; void a() { i = 1; } void b() { i++; } };
class DEa extends DE { void a() { i = 2; } };
class DEb extends DE { void b() { i--; } };
// class DEab extends DEa, DEb - can't write like this
class DEab extends DEa { void b() { i-- }; } // but this is copy-paste :c
我试过interface A,interface B后来DE implements A, B, DEa extends DE, DEb extends DE... 基本上是同样的问题:
interface A { void a(); } // methods in interfaces must be abstract
interface B { void b(); }
class DE implements A, B { int i; void a() { i = 1; } void b() { i++; } };
class DEa extends DE { void a() { i = 2; } };
class DEb extends DE { void b() { i--; } };
class DEab extends // ... well it give me nothing
没有复制粘贴怎么办?