Spesso nei miei progetti definisco una superclasse astratta le cui sottoclassi variano per lo più nei loro valori per i campi definiti nella superclasse.
Ad esempio, in un gioco che sto sviluppando c'è una classe astratta Missile con un numero di sottoclassi. Ognuno definisce un valore diverso per le variabili membro come MAX_SPEED , MASS , FLYING_FORCE , che vengono quindi utilizzate nei calcoli eseguiti nella superclasse.
Uso metodi astratti in Missile per forzare le sue sottoclassi a definire queste variabili. Ad esempio, ho semplicemente un metodo astratto defineMass() che costringe le sottoclassi a definire il proprio valore di massa.
Un esempio diverso potrebbe essere la mia Entity class (la superclasse di tutte le classi di gioco) che definisce un metodo loadImage() astratto che costringe le sottoclassi a definire un'immagine per se stessi.
Questa è una buona pratica? È comune?