Différence entre une méthode statique et non statique
Une méthode statique appartient à une classe et une méthode non statique appartient à un objet d’une classe. Les méthodes statiques sont utiles si vous n’utilisez qu’une seule fois la méthode et que vous n’avez pas besoin de plusieurs objets. Les méthodes non statiques sont utilisées si vous allez utiliser votre méthode pour créer plusieurs objets.
Table de comparaison
Méthode non statique | Méthode statique | |
---|---|---|
Définition | Ces méthodes ne sont jamais précédées du mot clé static. Exemple:
void fonction() { ...... ...... } |
Ces méthodes sont toujours précédées du mot clé static Exemple: static void fonction() { ...... ...... } |
Déclaration | Si une méthode doit s’exécutée plusieurs fois, vous pouvez la déclarer non statique. | Si une méthode doit s’exécutée qu’une seule fois dans le programme, vous pouvez la déclarer comme statique. |
Allocation | La mémoire est allouée chaque fois que la méthode est appellée. | La mémoire est allouée une seule fois au moment du chargement de la classe. |
Exemple d’une méthode statique
public class ExempleStatic { public static void main(String[] args) { //Il n'y a pas d'objet créer ici car afficher() est une méthode statique afficher(); } public static void afficher(){ System.out.println("Appel de la méthode statique"); } }
La sortie
Appel de la méthode statique
Exemple d’une méthode non statique
public class MaClasse { public static void main(String[] args) { MaClasse c = new MaClasse(); //L'objet est crée ici, car afficher() est une méthode non statique c.afficher(); } public void afficher(){ System.out.println("Appel d'une méthode non statique"); } }
La sortie
Appel de la méthode statique
Conclusion
Une méthode statique peut être appelée à la fois sur une classe ou sur un objet de la classe. Une méthode statique ne peut accéder qu’aux membres statiques. Une méthode non statique peut accéder aux membres statiques et non statiques, car au moment où la méthode statique est appelée, la classe peut ne pas être instanciée.