私はいくつかのJavaコードを調べていますが、何も含まれていない抽象クラスがたくさんあります。
たとえば。このようなもの -
public abstract class Processor
{
}
ただし、具体的な実装クラスがあります。そのような抽象クラスはどのような状況で意味がありますか?
すべてのサブクラスに共通の動作と状態を持つ基本クラスを作成する場合は、インターフェイスよりも抽象クラスであるIMOが優先されます。空の抽象クラスがインターフェースよりも役立つ状況はわかりません。通常、マーカーインターフェイスは空のインターフェイスです。
Abstract
クラスは、すべての可能な実装クラスに共通するロジックがある場合に使用されます。
内部Abstract class
に何も持たず、それを拡張するさまざまなクラスを記述しても、ほとんど役に立ちません。唯一の点は、すべての具象クラスdifference
に同じものを使用できることです。handle
状況の1つは、キーワードを使用してクラスをインスタンス化したくない場合はnew
、それが抽象であると定義できることです。
一部のライブラリでは、リフレクションを使用してこれらのマーカー抽象クラスの実装を探します。また、これは抽象クラス名自体によるコードの一種のドキュメントです。