我有一个名为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
没有复制粘贴怎么办?