Sto lavorando al programma/gioco in cui ho una classe di utilità statica con parametri.Come ereditare il campo statico e modificarne il valore?
class ParamsGeneral {
public static final int H_FACTOR = 100;
public static int MAX_SCORE = 1000;
...
}
quindi ho bisogno di sovrascrivere questi valori in alcuni casi specifici, ad esempio giocando sulla mappa con punteggio limitato. Così ho fatto seguente:
class ParamsLimited extends ParamsGeneral {
public static int MAX_SCORE = 500;
// other params stay same
}
E l'utilizzo previsto è il seguente:
class Player {
ParamsGeneral par;
public Player() {
if(onLimitedMap()){
par = new ParamLimited();
}
}
public boolean isWinner() {
if(this.score == par.MAX_SCORE) {
return true;
}
return false;
}
}
Non ho effettivamente testato questo codice, perché IDE si lamenta chiamando campo statico attraverso istanza e anche di campo nascondiglio . Vedo chiaramente che questo codice è puzzolente, quindi c'è un modo per ottenerlo o devo scrivere separatamente ogni classe param?
PS: so che shoud rendere la classe di default getter astratte e uso, io sono solo curioso di sapere se c'è un modo per rendere i valori accessibile in modo statico.
Direi che probabilmente non vuoi campi/metodi statici qui, è davvero così semplice. Perché non creare solo un'istanza di esso e ottenere l'ereditarietà completa? – ddmps
Beh, probabilmente è una cattiva abitudine da C, dove ero abituato a usare #define semplice per impostare i parametri globali. Questo mi sembrava un po 'eccessivo, creando istanza solo con parametri numerici. – jnovacho