Comment fonctionnent les méthodes de classe statique?
Bonsoir!
Après mes tentatives de suivre le niveau de la classe en cherchant comment instancier les classes internes, j'ai pris le partis de retourner vers les basiques que je ne maitrise pas forcément...
Je cherche à comprendre comment fonctionne le mot-clef static à l'aide du cours de jmdoudoux et le livre de Monsieur Eckel (si vous avez d'autres idées pour m'aider à progresser, je suis preneur!
Citation:
4.3.2. Le mot clé static
Le mot clé static s'applique aux variables et aux méthodes.
Les variables d'instance sont des variables propres à un objet. Il est possible de définir une variable de classe qui est partagée entre toutes les instances d'une même classe : elle n'existe donc qu'une seule fois en mémoire. Une telle variable permet de stocker une constante ou une valeur modifiée tour à tour par les instances de la classe. Elle se définit avec le mot clé static.
Code:
1 2 3 4 5 6 7
| Exemple :
public class Cercle {
static float pi = 3.1416f;
float rayon;
public Cercle(float rayon) { this.rayon = rayon; }
public float surface() { return rayon * rayon * pi;}
} |
Il est aussi possible par exemple de mémoriser les valeurs min et max d'un ensemble d'objets de même classe.
Une méthode static est une méthode qui n'agit pas sur des variables d'instance mais uniquement sur des variables de classe. Ces méthodes peuvent être utilisées sans instancier un objet de la classe. Les méthodes ainsi définies peuvent être appelées avec la notation classe.methode() au lieu de objet.methode() : la première forme est fortement recommandée pour éviter toute confusion.
Il n'est pas possible d'appeler une méthode d'instance ou d'accéder à une variable d'instance à partir d'une méthode de classe statique.
Je ne comprends pas la dernière phrase même si elle est explicitée par la phrase au-dessus, auriez vous un exemple?
Je n'ai pas bien compris pourquoi in écrit
et non pas d'accord, pour les instances cela permet de stocker une constante ou une valeur modifiée tour à tour par les instances de la classe. mais final aussi non?