JAVA static et non static (
Résolu/Fermé
A voir également:
- JAVA static et non static (
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
- Java runtime - Télécharger - Langages
6 réponses
Salut,
Je suis pas un pro du JAVA non plus mais j'en ai fait pas mal quand même.
La fonction "AfficheToi" est déclarée static ce qui signifie qu'elle peut être appellée sans avoir crée d'instance de la classe à laquelle elle appartient. Or, si aucune instance de la classe n'est créee, les objets de la classe, tel "NuméroDeCompte", n'existent pas non plus.
Donc, tu ne peux faire appel à un objet qui est susceptible de ne pas exister.
Tu dois donc enlever le terme "static" de l'en-tête de la fonction.
Si tu dois la garder pour une raison quelconque, il faut que tu revois ta classe et ta fonction. Surement en les dissociant.
@+
Je suis pas un pro du JAVA non plus mais j'en ai fait pas mal quand même.
La fonction "AfficheToi" est déclarée static ce qui signifie qu'elle peut être appellée sans avoir crée d'instance de la classe à laquelle elle appartient. Or, si aucune instance de la classe n'est créee, les objets de la classe, tel "NuméroDeCompte", n'existent pas non plus.
Donc, tu ne peux faire appel à un objet qui est susceptible de ne pas exister.
Tu dois donc enlever le terme "static" de l'en-tête de la fonction.
Si tu dois la garder pour une raison quelconque, il faut que tu revois ta classe et ta fonction. Surement en les dissociant.
@+
Bonjour
Quand tu mets static devant un nom de fonction, ça veut dire que tu définis une fonction qui n'est liée à aucune instance particulière de la classe, c'est à dire qu'on peut l'appeler sans qu'aucun objet CompteEnBanque n'ait été défini ("instancié").
Or les membres NumérodeCompte, Solde, etc.. ne sont pas définis comme static et n'existent donc que quand un objet est défini.
Quand tu mets static devant un nom de fonction, ça veut dire que tu définis une fonction qui n'est liée à aucune instance particulière de la classe, c'est à dire qu'on peut l'appeler sans qu'aucun objet CompteEnBanque n'ait été défini ("instancié").
Or les membres NumérodeCompte, Solde, etc.. ne sont pas définis comme static et n'existent donc que quand un objet est défini.
Si tout est static, tous les comptes auront le même numéro, le même solde, etc... Je ne pense pas que ce soit l'effet recherché.
Le seule chose qui me semble logique à faire dans ce cas, c'est de retirer static de la définition de AfficheToi, comme l'a dit PapaNoel
Le seule chose qui me semble logique à faire dans ce cas, c'est de retirer static de la définition de AfficheToi, comme l'a dit PapaNoel
Mycki
Messages postés
113
Date d'inscription
jeudi 8 novembre 2007
Statut
Membre
Dernière intervention
17 décembre 2007
46
10 déc. 2007 à 11:24
10 déc. 2007 à 11:24
Personnellement, je te conseillerais de mettre tes variables membres (qui sont accessoirement des constantes) en static...
Tu peux faire comme ca ca marchera je pense :
Comme tu es débutant en Java, comme moi il y a quelques mois, je vais te donner deux trois conseils utiles. D'abord, concernant tes noms de variables, ne mets jamais d'accents comme il y en a pour NuméroDeCompte.
Ensuite, pour mieux te repérer, tu peux utiliser la notation hongroise (pour voir en détail vas sur Wikipedia et tapes notation hongroise). En gros, tes noms de variables sont directement identifiables par la première lettre qui correspond au type de ta variable, exemple : private static int iNumber, ou encore String sSQL. Ca permet de te repérer plus vite.
Enfin, toujours concernant tes noms de variables, utilise des majuscules pour les constantes et des minuscules pour les variables.
Exemple : private static String sCONSTANTE_NOM = "Chaine de caractere";
ou
protected int iNumber;
Voila, j'espère que mes conseils t'aideront à l'avenir. ;)
EDIT : Ah! J'allais oublier. Dernier conseil, tes variables membres, qui sont aussi appelées Attributs de classe, doivent être précédées d'un préfixe pour savoir au premier coup d'oeil si elles sont variables membres ou pas (en gros, si tu peux les utiliser dans toute la classe ou pas). Pour les variables membres qui ne sont pas statiques, tu mets un m_ et pour celles qui sont statiques, tu mets s_.
Exemple :
Bien sur, tout ca, ca ne reste que des conseils, mais moi qui m'y suis mis récemment, avec des gens qui codent depuis longtemps, je vois à quel point c'est utile ;)
Tu peux faire comme ca ca marchera je pense :
public class CompteEnBanque { public static String NuméroDeCompte="004-33321322-32"; protected static int Solde=1000000000; static int NbrDeRetraits=23; private static double Taux=(0.04); public static void AfficheToi (String [] args) { System.out.println (NuméroDeCompte); System.out.println (Solde); System.out.println (NbrDeRetraits); System.out.println (Taux); } }
Comme tu es débutant en Java, comme moi il y a quelques mois, je vais te donner deux trois conseils utiles. D'abord, concernant tes noms de variables, ne mets jamais d'accents comme il y en a pour NuméroDeCompte.
Ensuite, pour mieux te repérer, tu peux utiliser la notation hongroise (pour voir en détail vas sur Wikipedia et tapes notation hongroise). En gros, tes noms de variables sont directement identifiables par la première lettre qui correspond au type de ta variable, exemple : private static int iNumber, ou encore String sSQL. Ca permet de te repérer plus vite.
Enfin, toujours concernant tes noms de variables, utilise des majuscules pour les constantes et des minuscules pour les variables.
Exemple : private static String sCONSTANTE_NOM = "Chaine de caractere";
ou
protected int iNumber;
Voila, j'espère que mes conseils t'aideront à l'avenir. ;)
EDIT : Ah! J'allais oublier. Dernier conseil, tes variables membres, qui sont aussi appelées Attributs de classe, doivent être précédées d'un préfixe pour savoir au premier coup d'oeil si elles sont variables membres ou pas (en gros, si tu peux les utiliser dans toute la classe ou pas). Pour les variables membres qui ne sont pas statiques, tu mets un m_ et pour celles qui sont statiques, tu mets s_.
Exemple :
public class CompteEnBanque { private static int s_iNumeroCompte; private String m_sChaineDeCaracteres; private static String s_sCHAINE_DE_CARACTERE; }
Bien sur, tout ca, ca ne reste que des conseils, mais moi qui m'y suis mis récemment, avec des gens qui codent depuis longtemps, je vois à quel point c'est utile ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut à tous,
Merci franchement, ca m'a bien aidé et les conseils viennent bien à propos!!!!!
Merci franchement, ca m'a bien aidé et les conseils viennent bien à propos!!!!!
Mycki
Messages postés
113
Date d'inscription
jeudi 8 novembre 2007
Statut
Membre
Dernière intervention
17 décembre 2007
46
10 déc. 2007 à 11:58
10 déc. 2007 à 11:58
Dans ce cas, pourquoi ne pas instancier un objet de la classe CompteEnBanque ?
Directement dans la méthode AfficheToi(), il n'a qu'à faire CompteEnBanque objetCompteEnBanque = new CompteEnBanque(); et après il instancie son objet chaque fois qu'il veut afficher ses variables membres.
System.out.println( objetCompteEnBanque.NuméroDeCompte );
System.out.println( objetCompteEnBanque.Solde );
Etc...
Directement dans la méthode AfficheToi(), il n'a qu'à faire CompteEnBanque objetCompteEnBanque = new CompteEnBanque(); et après il instancie son objet chaque fois qu'il veut afficher ses variables membres.
System.out.println( objetCompteEnBanque.NuméroDeCompte );
System.out.println( objetCompteEnBanque.Solde );
Etc...