7

いくつかのクラスにインターフェイスMyInterfaceを実装していて、それらすべてに抽象クラスMyAbstractClassを拡張してもらいたいです。それを行うための最良の方法は何ですか?

MyAbstractClassを拡張してMyInterfaceを実装する別の抽象クラスを作成するよりも良い方法はありますか?

(投稿する前に、このような質問は見つからなかったことを誓います)

4

3 に答える 3

6

最もクリーンな解決策は、インターフェースのJavaDocでそのような要件を定義することです。次に、JavaDocで、「このインターフェースを使用するには、MyAbstractClassから拡張するか、独自の実装を提供する必要があります」のように記述する必要があります。このように、プログラマーは実装に責任があります。これはあなたが専門性を解決しようとする社会学的問題であることを忘れないでください。

別の「解決策」は、インターフェースを削除して抽象クラスを使用することです。抽象クラスにインターフェースを実装することは、ここでは意味がありません。

于 2012-10-18T11:47:19.437 に答える
5

MyAbstractClassを実装するように定義してからMyInterface、他のすべてのクラスを拡張することができMyAbstractClassます。

public abstract class MyAbstractClass implements MyInterface {
    ...
}

public class OneOfSeveral extends MyAbstractClass {
    ...
}
于 2012-10-18T11:26:24.027 に答える
0

すべての具象クラスに、実際に定義を変更する以外の方法でMyAbstractClassを拡張するように強制することはできません。

class A implements MyInterface

class A extends MyAbstractClass

そしてもちろん

abstract class MyAbstractClass implements MyInterface

ただし、作成するときに別の抽象クラスは必要ありません。

編集:以下のコメントについて:「MyInterfaceのすべての実装がMyAbstractClassを拡張する別の方法が必要です」-それを賢明に強制することはできません。MyInterface必要に応じて拡張して呼び出す別のインターフェイスを定義できますMyAbstractClassInterfaceが、既存のクラスを強制して、この後者のインターフェイスを実装する抽象クラスを拡張することはできませんが、もちろん、このインターフェイスで定義されたメソッドを実際に実装する必要があります..。。

インターフェイスを削除して、抽象クラスに置き換える必要があるように思われます。

乾杯、

于 2012-10-18T11:32:25.220 に答える