という名前のアルゴリズムの基本クラスがあります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 BDE implements A, BDEa extends DEDEb 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
コピペせずにどうやってやるの?