... Mais comme ca ne dépend pas vraiment de l'instance mais plutot de la classe instanciée je pensais le mettre comme constante de classe
A mon avis, mauvaise idée. Si en effet tous les trolls sont carnivores, en revanche, chaque instance de Monstre a sa valeur propre. Du coup, c'est effectivement une propriété d'instance pour celui qui cherchera à traiter tous les Monstres de la même manière.
ou alors tu serais obligé d'utiliser quelque-chose comme
shrek.getClass().régime & HERBE
pour savoir si le monstre shrek est herbivore ou non.
Utiliser une méthode getRégime() virtuelle ... pourquoi pas, surtout si tu as déjà d'autres méthodes virtuelles. Mais ça dépend surtout si quelqu'un à l'extérieur de ta classe a besoin de connaître le régime de tes monstres.
oui mon but est que ça soit accessible en dehors de la classe.
J'avais pensé à ce truc de getClass & cie mais j'en suis pas hyperfan
public static new int ArmsCount = 3;
est complètement orthogonal. Ce n'est utile que si tu as la flemme de retenir dans les méthodes propres à ta classe (et ses sous-classes) que les Trolls ont 3 bras. En aucun cas ça ne t'aidera au niveau de Monstre à savoir le nombre de bras de Monstre shrek.
bool[] herbivores = new bool[nombredemonstre]
C'est plus ou moins pour éviter ce genre de constructions qu'on a inventé la POO.
Voilà. J'espère que ça t'aide à y voir plus clair.
Il y a aussi ma manie de donner des noms à toutes les constantes que j'utilise (ça clarifie pas mal le code je trouve) mais là n'est pas le problème.
Ok mon tableau de bool ne semble pas être une bonne idée
mais pour revenir à getclass, c'est un peu ce qu'il se passe implicitement quand on appelle une méthode virtuelle telle que monstre.getregime(), il va directement faire monstre.getclass.getregime.
En gros faire un truc comme ça ?
public class Monstre{
public static bool herbivore;
bool getHerbivore(){
return getclass().herbivore;
}
}
public class Troll{
public static bool herbivore = true;
}
je pense que je vais utiliser la solution "moche" du premier post
je mets en résolu mais je suis toujours ouvert à discussion

PS: les trolls n'ont pas trois bras
