という名前のアルゴリズムの基本クラスがありますDE
。a()
、 、 の2 つのメソッドが実装されていますb()
。という名前のこのアルゴリズムのバリエーションをテストしたいと思いDEa
ます。だから、私はやっていてDEa extends DE
、メソッドをオーバーライドしていますa()
。別のバリエーション、アルゴリズムがありますDEb
。私は同じことをして、DEb extends DE
オーバーライドしていますb()
。今、アルゴリズムをテストしたいと思いますDEab
。これが問題です。私が書いDEab extends DEa
た場合、オーバーライドされた method が既にありますが、 ではa()
ありません。からb()
コピーする必要があります。b()
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
コピペせずにどうやってやるの?