Gargouille
Messages : 97 Date d'inscription : 02/09/2008
| Sujet: Le mot clef static Lun 8 Sep - 10:03 | |
| Chaque instance d'une classe possède ses propres valeurs aux éléments qu'elle déclare. On accède aux éléments en s'adressant à l'instance concernée : - Code:
-
// en admettant que la méthode Target existe et renvoie un mobile ciblé par le joueur Mobile mob = Target();
//mob est une variable de type Mobile, elle a la valeur renvoyée par la méthode Target() //Hits est une variable de type int, déclarée dans la classe Mobile int PointsDeVieDeCetteInstanceDuMobCiblé = mob.Hits;
Certaines valeurs ne nécessitent pas d'être propres à chaque instance de la classe, ou nécessitent d'être communes à la classe, indépendament de l'instance concernée. Elles seront alors déclarées avec le mot clef static. Exemple:
- Vous créez un nouveau monstre...
- Vous voulez qu'il ait deux types d'ennemis, deux races de monstres quil fuiera à vue...
- L'un des types d'ennemis correspondant à celui qui l'a frappé en dernier
- Le second étant constant, les dragons par exemple
Alors il faudra déclarer les variables ainsi : - Code:
-
//dans cet exemple, les variables ne sont pas initialisées, elles pourraient l'^tre immédiatement ou par la suite
public Mobile DernierEnnemiMortel;
public static Mobile EnnemiMortelHereditaire;
Dés lors, dans un script extérieur à cette classe, par exemple, si on veut connaitre les valeurs de ces deux variables, il faudra:
- s'adresser à une instance pour avoir sa valeur de DernierEnnemiMortel :
- Code:
-
// en admettant que la méthode Target existe et renvoie un mobile ciblé par le joueur Mobile targ = Target();
//pour connaitre le DernierEnnemiMortel du mobile ciblé (targ) Mobile mob = targ.DernierEnnemiMortel;
- s'adresser au type pour avoir sa valeur de EnnemiMortelHereditaire :
- Code:
-
// en admettant que la méthode Target existe et renvoie un mobile ciblé par le joueur Mobile targ = Target();
//pour connaitre le EnnemiMortelHereditaire du mobile ciblé (targ) Type type = targ.GetType();//GetType étant une méthode renvoyant le type de l'instance désignée Mobile mob = type.EnnemiMortelHereditaire;
Demander un élément static en s'adressant à une instance renverra une erreur. Ce qui est static doit être accédé via le type, pas via une instance du type.Nous n'avons parlé que des variables, mais static peut être déclaré par une méthode, une classe... Le principe étant le même, appeler une méthode déclarant static doit se faire via le type de l'instance et pas par une instance du type. | |
|