j'ai un problème de compréhension du caractère "static" d'une variable ou
d'une méthode. Je ne comprends pas vraiment à quoi ça sert. En quoi le
résultat serait-il différent si je ne déclarais pas mes variables et
méthodes "static".
Actuellement, j'ai créé une classe de distribution aléatoire d'un jeu de
cartes (je débute, donc ce n'est pas très ambitieux, mais bon...).
Mes variables et méthodes sont toutes de type "static". Pourquoi ? Parce que
si je ne mets pas "static" partout, j'obtiens l'erreur suivante à
l'exécution :
java.lang.NoSuchMethodError: main
Exception in thread "main"
Donc : je rajoute "static" à ma méthode "main". Ce qui m'oblige ensuite à
l'ajouter de partout puisque les méthodes non "static" ne veulent pas
s'exécuter avec un main "static" et que le fait d'ajouter "static" à mes
méthodes m'oblige dans un second temps à déclarer "static" certaines de mes
variables.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
captainpaf
"frederic courcier" a écrit dans le message de news: bg6iek$50i$
Bonsoir,
j'ai un problème de compréhension du caractère "static" d'une variable ou d'une méthode. Je ne comprends pas vraiment à quoi ça sert. En quoi le résultat serait-il différent si je ne déclarais pas mes variables et méthodes "static".
Actuellement, j'ai créé une classe de distribution aléatoire d'un jeu de cartes (je débute, donc ce n'est pas très ambitieux, mais bon...).
Mes variables et méthodes sont toutes de type "static". Pourquoi ? Parce que
si je ne mets pas "static" partout, j'obtiens l'erreur suivante à l'exécution :
java.lang.NoSuchMethodError: main Exception in thread "main"
Donc : je rajoute "static" à ma méthode "main". Ce qui m'oblige ensuite à l'ajouter de partout puisque les méthodes non "static" ne veulent pas s'exécuter avec un main "static" et que le fait d'ajouter "static" à mes méthodes m'oblige dans un second temps à déclarer "static" certaines de mes
variables.
Merci de m'aider à comprendre ce qui se passe.
ou là là, STOP, arrêtes tout ;-) ! Une petite explication s'impose. Lorsque tu créer une class, tu dois instancier un object de cette classe pour l'utiliser. C'est le fonctionnement normal. Par exemple <code> public class Exemple { /* méthode pas très originale */ public void hello() { System.out.println("Hello"); }
} </code> Voilà une class qui ne fait pas grand chose. Pour utiliser cette class, tu dois créer un object de cette class comme ceci. <code> //... /* création de l'object exemple, la machine virtuelle réserve de la mémoire pour cet object avec le mot clé new(appel du constructeur */ Exemple monExemple = new Exemple(); /* appel de la méthode grâce à l'object créé monExemple.hello(); //... </code> Maintenant, tu veux tester ce magnifique exemple, pour celà, tu dois créer une class avec une méthode main. C'est le point d'entré pout tous programmes java. Cette méthode doit obligatoirement avoir cette signature : public static void main(String[] args){} et pas autre chose. le mot clé static signifie que tu peut appeler cette méthode sans instancier d'object de la class. Si, par exemple tu places la méthode main dans la class Exemple, tu pourras l'appeller en faisant: Exemple.main(new String[]{"arg1","arg2"}); Après, il faut bien comprendre que dans toutes les méthodes static, on ne peut appeler directement que des méthodes static puisque aucun objet n'a été instancié. Maintenant, pour tester cet exemple, tu peux très bien faire : <code> public class Exemple { /* méthode non static qui affiche hello */ public void hello() { System.out.println("Hello"); }
/* méthode static qui affiche bonjour */ public static void bonjour() { System.out.println("Bonjour"); }
/* point d'entré de tout programme java */ public static void main(String[] args) { Exemple monExemple = new Exemple(); /* appelle de la méthode non static grâce à l'objet créé */ monExemple.hello(); /* appelle de la méthode static, directement, sans création d'objet */ bonjour(); /* puiqu'on est dans la class Exemple le code ci-dessus équivaut à : */ Exemple.bonjour(); /* et on termine l'execution du programme */ System.exit(0); } } </code>
Voilà, si tu as encores des points obscures sur static, n'hésites pas à demander. Bonne programmation en java.
"frederic courcier" <frederic.courcier@9online.fr> a écrit dans le message
de news: bg6iek$50i$1@apollon.grec.isp.9tel.net...
Bonsoir,
j'ai un problème de compréhension du caractère "static" d'une variable ou
d'une méthode. Je ne comprends pas vraiment à quoi ça sert. En quoi le
résultat serait-il différent si je ne déclarais pas mes variables et
méthodes "static".
Actuellement, j'ai créé une classe de distribution aléatoire d'un jeu de
cartes (je débute, donc ce n'est pas très ambitieux, mais bon...).
Mes variables et méthodes sont toutes de type "static". Pourquoi ? Parce
que
si je ne mets pas "static" partout, j'obtiens l'erreur suivante à
l'exécution :
java.lang.NoSuchMethodError: main
Exception in thread "main"
Donc : je rajoute "static" à ma méthode "main". Ce qui m'oblige ensuite à
l'ajouter de partout puisque les méthodes non "static" ne veulent pas
s'exécuter avec un main "static" et que le fait d'ajouter "static" à mes
méthodes m'oblige dans un second temps à déclarer "static" certaines de
mes
variables.
Merci de m'aider à comprendre ce qui se passe.
ou là là, STOP, arrêtes tout ;-) ! Une petite explication s'impose. Lorsque
tu créer une class, tu dois instancier un object de cette classe pour
l'utiliser. C'est le fonctionnement normal. Par exemple
<code>
public class Exemple
{
/* méthode pas très originale */
public void hello()
{
System.out.println("Hello");
}
}
</code>
Voilà une class qui ne fait pas grand chose. Pour utiliser cette class, tu
dois créer un object de cette class comme ceci.
<code>
//...
/* création de l'object exemple, la machine virtuelle réserve de la mémoire
pour cet object avec le mot clé new(appel du constructeur */
Exemple monExemple = new Exemple();
/* appel de la méthode grâce à l'object créé
monExemple.hello();
//...
</code>
Maintenant, tu veux tester ce magnifique exemple, pour celà, tu dois créer
une class avec une méthode main. C'est le point d'entré pout tous programmes
java. Cette méthode doit obligatoirement avoir cette signature :
public static void main(String[] args){}
et pas autre chose.
le mot clé static signifie que tu peut appeler cette méthode sans instancier
d'object de la class. Si, par exemple tu places la méthode main dans la
class Exemple, tu pourras l'appeller en faisant:
Exemple.main(new String[]{"arg1","arg2"});
Après, il faut bien comprendre que dans toutes les méthodes static, on ne
peut appeler directement que des méthodes static puisque aucun objet n'a été
instancié. Maintenant, pour tester cet exemple, tu peux très bien faire :
<code>
public class Exemple
{
/* méthode non static qui affiche hello */
public void hello()
{
System.out.println("Hello");
}
/* méthode static qui affiche bonjour */
public static void bonjour()
{
System.out.println("Bonjour");
}
/* point d'entré de tout programme java */
public static void main(String[] args)
{
Exemple monExemple = new Exemple();
/* appelle de la méthode non static grâce à l'objet créé */
monExemple.hello();
/* appelle de la méthode static, directement, sans création d'objet
*/
bonjour();
/* puiqu'on est dans la class Exemple le code ci-dessus équivaut à :
*/
Exemple.bonjour();
/* et on termine l'execution du programme */
System.exit(0);
}
}
</code>
Voilà, si tu as encores des points obscures sur static, n'hésites pas à
demander.
Bonne programmation en java.
"frederic courcier" a écrit dans le message de news: bg6iek$50i$
Bonsoir,
j'ai un problème de compréhension du caractère "static" d'une variable ou d'une méthode. Je ne comprends pas vraiment à quoi ça sert. En quoi le résultat serait-il différent si je ne déclarais pas mes variables et méthodes "static".
Actuellement, j'ai créé une classe de distribution aléatoire d'un jeu de cartes (je débute, donc ce n'est pas très ambitieux, mais bon...).
Mes variables et méthodes sont toutes de type "static". Pourquoi ? Parce que
si je ne mets pas "static" partout, j'obtiens l'erreur suivante à l'exécution :
java.lang.NoSuchMethodError: main Exception in thread "main"
Donc : je rajoute "static" à ma méthode "main". Ce qui m'oblige ensuite à l'ajouter de partout puisque les méthodes non "static" ne veulent pas s'exécuter avec un main "static" et que le fait d'ajouter "static" à mes méthodes m'oblige dans un second temps à déclarer "static" certaines de mes
variables.
Merci de m'aider à comprendre ce qui se passe.
ou là là, STOP, arrêtes tout ;-) ! Une petite explication s'impose. Lorsque tu créer une class, tu dois instancier un object de cette classe pour l'utiliser. C'est le fonctionnement normal. Par exemple <code> public class Exemple { /* méthode pas très originale */ public void hello() { System.out.println("Hello"); }
} </code> Voilà une class qui ne fait pas grand chose. Pour utiliser cette class, tu dois créer un object de cette class comme ceci. <code> //... /* création de l'object exemple, la machine virtuelle réserve de la mémoire pour cet object avec le mot clé new(appel du constructeur */ Exemple monExemple = new Exemple(); /* appel de la méthode grâce à l'object créé monExemple.hello(); //... </code> Maintenant, tu veux tester ce magnifique exemple, pour celà, tu dois créer une class avec une méthode main. C'est le point d'entré pout tous programmes java. Cette méthode doit obligatoirement avoir cette signature : public static void main(String[] args){} et pas autre chose. le mot clé static signifie que tu peut appeler cette méthode sans instancier d'object de la class. Si, par exemple tu places la méthode main dans la class Exemple, tu pourras l'appeller en faisant: Exemple.main(new String[]{"arg1","arg2"}); Après, il faut bien comprendre que dans toutes les méthodes static, on ne peut appeler directement que des méthodes static puisque aucun objet n'a été instancié. Maintenant, pour tester cet exemple, tu peux très bien faire : <code> public class Exemple { /* méthode non static qui affiche hello */ public void hello() { System.out.println("Hello"); }
/* méthode static qui affiche bonjour */ public static void bonjour() { System.out.println("Bonjour"); }
/* point d'entré de tout programme java */ public static void main(String[] args) { Exemple monExemple = new Exemple(); /* appelle de la méthode non static grâce à l'objet créé */ monExemple.hello(); /* appelle de la méthode static, directement, sans création d'objet */ bonjour(); /* puiqu'on est dans la class Exemple le code ci-dessus équivaut à : */ Exemple.bonjour(); /* et on termine l'execution du programme */ System.exit(0); } } </code>
Voilà, si tu as encores des points obscures sur static, n'hésites pas à demander. Bonne programmation en java.