何よりもまず、クラスの親を変更することを心配している場合は、継承を間違っている可能性があります。継承は、単にコードの再利用を促進するのではなく、「is-a」関係を確立するために使用する必要があります。コードの再利用のみが必要な場合は、継承ではなく委譲の使用を検討してください。サブタイプとその親の間に中間タイプを導入できると思いますが、その可能性が私の設計を推進させます。
第 2 に、基本クラスの機能を使用する必要があるが、それを拡張し、かつユース ケースが静的メソッドを呼び出す場合は、機能を保持するために何らかの外部クラスを使用することを検討することをお勧めします。私の考えでは、この典型的なケースは Factory パターンです。ファクトリ パターンを実装する 1 つの方法は、クラスのインスタンスを構築するクラスの静的メソッドであるファクトリ メソッドを使用することです。通常、コンストラクターは保護されているため、ファクトリ メソッドが外部からクラスを構築する唯一の方法になります。
継承階層でファクトリ メソッドを再利用する方法の 1 つは、サブタイプのファクトリ メソッドから基本クラスのファクトリ メソッドを直接呼び出すのではなく、保護されたメソッドに共通コードを配置し、ファクトリ メソッドからそのメソッドを呼び出すことです。より良い実装では、同じ手法を使用するかもしれませんが、Factory メソッドを Factory クラスに移動し、おそらく初期化メソッドと組み合わせて、コンストラクター ロジック (現在はプライベートではなく内部) を使用してオブジェクトを作成します。継承している動作がクラスの外部にある場合 (復号化/検証など)、Factory 内で共有メソッド (または構成) を使用して、Factory メソッド間で再利用できるようにすることができます。
静的メソッドを使用する目的を知らなければ、正確な方向性を示すことは困難ですが、これが役立つことを願っています。