In primo luogo, se siete preoccupati per ri-genitorialità una classe, allora probabilmente stai facendo eredità sbagliato. L'ereditarietà dovrebbe essere usata per stabilire relazioni "is-a", non semplicemente per riutilizzare il codice adottivo. Se è necessario riutilizzare il codice da solo, considerare l'utilizzo della delega piuttosto che l'ereditarietà. Suppongo che potresti introdurre un tipo intermedio tra un sottotipo e il suo genitore, ma lascerei che questa possibilità guidasse il mio progetto.
In secondo luogo, se è necessario utilizzare le funzionalità dalla classe base ma estenderlo E il caso d'uso richiede un metodo statico, è possibile prendere in considerazione l'utilizzo di alcune classi esterne per mantenere la funzionalità. Il classico caso per questo nella mia mente è il modello Factory. Un modo per implementare il modello Factory è tramite Metodi Factory, un metodo statico su una classe che costruisce un'istanza di quella classe. Solitamente il costruttore è protetto in modo che il metodo factory sia l'unico modo per costruire la classe dall'esterno.
Un modo per avvicinarsi al riutilizzo con i metodi di fabbrica in una gerarchia di ereditarietà sarebbe inserire il codice comune in un metodo protetto e chiamare tale metodo dal metodo di fabbrica piuttosto che chiamare direttamente il metodo di base della classe di base da un tipi Metodo di fabbrica. Un'implementazione migliore potrebbe utilizzare la stessa tecnica, ma spostare i metodi di fabbrica su una classe Factory e utilizzare la logica del costruttore (interna ora, non privata), forse in combinazione con un metodo di inizializzazione, per creare l'oggetto. Se il comportamento che si sta ereditando è esterno alla classe (decifrazione/validazione/ecc.), È possibile utilizzare metodi condivisi (o composizione) all'interno della Factory per consentire il riutilizzo tra i metodi Factory.
Senza conoscere l'obiettivo del tuo utilizzo dei metodi statici è difficile darti una direzione esatta, ma speriamo che ciò possa essere d'aiuto.
Qualsiasi motivo per cui questo particolare metodo è statico? – Rad