eJAVA: static an static final

eJAVA: static an static final - Programmation

Marsh Posté le 11-03-2002 à 09:31:53    

Bonjour,
 
Je suis une fille, nouvelle dans la programmation, Java est mon premier language.
 
J'ai du mal a comprendre le "static" et "static final", quelqu'un peut m'aider svp?
 
Merci beaucoup  :)  
 
Ly

Reply

Marsh Posté le 11-03-2002 à 09:31:53   

Reply

Marsh Posté le 11-03-2002 à 09:44:57    

Bonjour!
 
Java étant un language objet, il faut déjà connaître la notion d'instance : une classe est un "modèle" : elle définit les caractéristiques et le comportement d'un ensemble d'objets, appellés instances de la classe.
 
Chaque instance possède les attributs de la classe, mais leurs valeurs peuvent être différentes entre deux instances.
 
Par exemple, une classe Point sera défini comme ça :
 
class Point {
  float x;
  float y;
  Point(float x, floaty) {
     this.x = x;
     this.y = y;
  }
}
 
la ligne :
Point a = new Point(2.1, 12.8);
 
crée une nouvelle instance de Point, appellée a, qui a les valeurs 2.1 pour x et 12.8 pour y
 
Imaginons qu'on veuille avoir une valeur particulière, accessible depuis toutes les instances, et identique pour toutes les instances. Par exemple, dans le cas de la classe Point, on peut vouloir définir l'origine du plan.
Pour éviter d'instancier sans arrêt ce point particulier, on peut déclarer une variable statique c'est à dire commune à toutes les instances. Dans notre cas, on écrira :
 
class Point {
 
public static Point ORIGIN = new Point(0,0);
 
.... (comme au dessus)..
}
 
Avec ça, on a une variable ORIGIN, qui est le point 0,0 accessible de partout, en faisant  
Point.ORIGIN
 
ORIGIN est appellé "variable de classse", par opposition à x et y, appellées "variables d'instance"
 
Imaginons maintenant qu'on veuille rendre cette variable constante : la ligne devient :  
public static final Point ORIGIN=new Point(0,0);
 
Dans ce cas, on ne peut plus modifier la valeur des attributs de ORIGIN.
 
C'est donc comme ça qu'on va définir des constantes en Java
 
Ouala ouala!

Reply

Marsh Posté le 11-03-2002 à 09:49:31    

gFive on drague ? :D


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-03-2002 à 09:50:25    

Dark : Tu peux parler, toi, t'arrêtes pas de draguer benou et Veryfree! :D

Reply

Marsh Posté le 11-03-2002 à 09:50:52    

pour ton info, la méthodo en Java veut que une constante a un nom en majuscule.
 
donc ton public static ORIGIN ... aurait du etre
 
public static origin
 
par contre ton  
 
public static final ORIGIN
 
est bien juste (tjrs du point de vue de la méthodo)
 
A+


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-03-2002 à 09:51:03    

gfive a écrit a écrit :

Dark : Tu peux parler, toi, t'arrêtes pas de draguer benou et Veryfree! :D  




 
diantre je suis démasqué :D


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-03-2002 à 09:51:15    

tu en oublies un grand fou ...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Toi :D


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-03-2002 à 10:33:00    

gfive a écrit a écrit :

Dark : Tu peux parler, toi, t'arrêtes pas de draguer benou et Veryfree! :D  




 
Oui... C'est... une tragédie ! Oh ! Pourtant... j'ai tout fait... tout. Mais (soupir), je n'ai jamais reçu l'attention de l'homme ténébreux ! Arrgh. C'est la fin... Je me meurs.
 
:D

Reply

Marsh Posté le 11-03-2002 à 10:37:58    

gfive a écrit a écrit :

Dark : Tu peux parler, toi, t'arrêtes pas de draguer benou et Veryfree! :D  




 
Alors tu me drague vraiment? :D non je deconne
 
Merci beaucoup pour l'explication tres detaillee! Mais la notion de l'instance est encore un peu flou pour moi. Ce n'est pas parce que ton explication n'est pas clair mais c'est parce que je suis une fille - ca ne veut pas dire que les filles sont betes mais juste qu'elles sont moins fortes que les garcons en ordinateur. Tu peux me donner un autre example?  
 
Merci! Thanks! Danke!

Reply

Marsh Posté le 11-03-2002 à 10:49:00    

euh bin en fait.
 
En Java tu définis des classes d'objet. Par exemple une pomme. Qqch du genre
 
public class Pomme  {
 
    public int couleur;
 
}
 
Ca veut dire que pour chaque objet de type Pomme que tu vas crée, il va avoir avoir un attribut qui est sa couleur (rouge ou verte par exemple)
 
Pomme p = new Pomme();
 
bon maintenant tu voudrais bien faire deux choses.  
 
1) Avoir un truc plus beau et visuel que un entier (couleur = 1 ca veut pas dire grand chose) --> Utilisation de constantes
2) Tu voudrais bien connaitre le nombre de pommes dans ton système. C'est donc une valeur qui n'a rien a voir avec une pomme en particulier mais plutot l'ensemble des pommes (la classe pomme quoi)
 
tu peux faire ca alors
 
public class Pomme {
 
    public static final int ROUGE = 0;
    public static final int VERTE = 1;
 
    public static nombre = 0;
 
    public int couleur;
 
    public Pomme(int couleur) {
       // augmenter le nombre de pommes dans le système
       nombre++;
       this.couleur = couleur;
    }
}
 
 
et après tu peux faire des trucs du genre
 
Pomme p = new Pomme(Pomme.ROUGE);
 
Est ce plus clair ??


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-03-2002 à 10:49:00   

Reply

Marsh Posté le 11-03-2002 à 10:53:28    

final signifie qu'on ne peut pas redéfinir une variable, une méthode ou une classe:
 
pour une variable, cela implique que la valeur est fixée (d'où l'utilisation pour définir des constantes)
 
pour une méthode, il sera impossible de redéfinir la méthode dans une classe fille
 
une classe finale ne peut pas avoir de filles
 
 
-----------------------
 
une variable static est partagée par toutes les instances de la classe :
 
class MaClasse { public static int toto; ... }
 
MaClasse MC1 = new MaClasse();
MaClasse MC2 = new MaClasse();
 
MC1.toto = 10;
System.out.println(MC2.toto) //affiche 10
 
 
une méthode static peut être utilisée sans avoir créé d'instance de la classe :
class MaClasse {  
public static void message() {
   System.out.println("coucou" );
}
}
 
de n'importe quelle autre classe, tu peux faire :
MaClasse.message();
 
 
une méthode static ne peut utiliser que des variables static
(ou des variables internes à la méthode)


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 11-03-2002 à 10:56:27    

Je ne peux pas croire qu'une fille de Hanoi s'avoue moins forte que les garçons au sujet de la programmation.

Reply

Marsh Posté le 11-03-2002 à 10:59:44    

Autant de réponses lorsqu'il s'agit d'une fille  :ouch:  
 
Bon bah :
 
public class Toto {
public static int age = 10; // Variable de classe
public static final String Nom = "Toto"; // Constante
}
 
public class Bob {
public void test() {
Toto.age++; // Tu as le droit
Toto.nom = "Marie Louise" // t'as pas le droit :D
}

Reply

Marsh Posté le 11-03-2002 à 11:56:42    

Merci a tous!
 
Tout est clair et net! Maintenant j'avoue d'etre aussi forte que les garcons en programmation :benetton:
 
Gros bisous a tous

Reply

Marsh Posté le 11-03-2002 à 13:19:21    

lyliann a écrit a écrit :

Merci a tous!
 
Tout est clair et net! Maintenant j'avoue d'etre aussi forte que les garcons en programmation :benetton:
 
Gros bisous a tous  




 
On t'embrasse bien fort.

Reply

Marsh Posté le 11-03-2002 à 14:10:11    

Mais tu es nouvelle ici, en plus!
Bienvenue! C'est le moins qu'on puisse dire... :hello:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 11-03-2002 à 14:22:33    

:sarcastic:  
 
 
 
 
 
 
 :lol:  :lol:  :lol:  
 
 :hello:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-03-2002 à 14:24:40    

On dirait que tu es très :sarcastic: aujourd'hui Dark.

Reply

Marsh Posté le 11-03-2002 à 14:33:48    

oula je suis de bonne humeur. Mon chef a dit que la technical review que j'ai faite était bien faite justement :D
 
Alors comme c'est ma première semaine, je suis plutot satisfait (c'est un peu stressant les démarrages de boulot)...
 
A+


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-03-2002 à 14:48:06    

Plus dure sera la chute... :D

Reply

Marsh Posté le 11-03-2002 à 22:44:53    

ben voila. j'ai du boulot la journée et je loupe tous les topics intéressant :(
 
et pour une fois je trouve même pas un petit truc à la con à ajouter. Je deviens vieux.
 
dit donc dark, c'est ta première semaine et tu trouves encore le temps de passer sur le forum ??? attend que le patron jete un coup d'oeil aux logs du proxy ;)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 11-03-2002 à 22:46:56    

lyliann a écrit a écrit :

Je suis une fille, nouvelle dans la programmation




"ou comment s'attirer les faveurs des forumeurs" :)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 11-03-2002 à 22:55:32    

benou a écrit a écrit :

dit donc dark, c'est ta première semaine et tu trouves encore le temps de passer sur le forum ??? attend que le patron jete un coup d'oeil aux logs du proxy ;)  




 
Mais non t'inquiète ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-03-2002 à 22:57:14    

benou a écrit a écrit :

 
"ou comment s'attirer les faveurs des forumeurs" :)  




 
yesaieuh. Regarde l'arbre à cerise, il n'en revient pas. Il est tout émoustillé :D


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-03-2002 à 23:05:16    

DarkLord a écrit a écrit :

 
 
yesaieuh. Regarde l'arbre à cerise, il n'en revient pas. Il est tout émoustillé :D  




:) damn grilled comme dirait l'autre ! :D

Reply

Marsh Posté le 11-03-2002 à 23:08:15    

héhé


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-03-2002 à 23:10:58    

Si ma promise me voyait !

Reply

Marsh Posté le 12-03-2002 à 09:28:21    

ouarf :)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 12-03-2002 à 13:54:45    

Krueger a écrit a écrit :

Mais tu es nouvelle ici, en plus!
Bienvenue! C'est le moins qu'on puisse dire... :hello:  




 
Merci! Moi tres touchee! Mais malheureusement comme je suis nouvelle dans la programmation, je ne pourrai pas beaucoup aider, par contre je vais essayer de poser le maximum de questions pour que vous avez de la chance pour me draguer, d'acc? :lol:

Reply

Marsh Posté le 12-03-2002 à 13:56:29    

Ah ? Je crois que je vais traîner plus souvent ici moi...  :lol:


---------------
"Si ça peut déconner, ça va déconner..."
Reply

Marsh Posté le 12-03-2002 à 23:18:50    

rhalala, on dirait des informaticiens célibataires!! :D

Reply

Marsh Posté le 13-03-2002 à 02:17:09    

Je vois que la plupart d'entre vous sont deja sur le marche de travail (je n'aime pas trop cette expression formelle 'marche de travail' mais mon vocabulaire en francais est limite alors!) ou a la fin des etudes universitaires. Il n'y a que moi qui est en premiere annee d'informatique! Juste un petit remarque apres avoir balade un peu sur le forum.

Reply

Marsh Posté le 14-03-2002 à 00:15:59    

à voir certaines questions, je ne pense pas que tu sois la seule en 1ere année d'info ... :)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 14-03-2002 à 01:03:13    

clair !!!!
 
 :jap:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-03-2002 à 01:21:10    

benou a écrit a écrit :

à voir certaines questions, je ne pense pas que tu sois la seule en 1ere année d'info ... :)  




 
C'est vrai en fait, je ne suis pas la seule j'ai remarque cela mais quand meme la plupart des sujets sont du latin et du grec pour moi! Je crois que les seuls topics que je comprends et participe sont les blabla et les topics que je cree moi meme hihi mais ce n'est pas grave, on est ici pour apprendre alors!  
 
Dans quelque jours je dois rendre un autre devoir de Java (j'en ai un toutes les semaines) et celui ci est tres dur donc j'aurai certainment besoin de votre aide.
 
Merci d'avance et @+

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed