eJAVA: static an static final - Programmation
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!
Marsh Posté le 11-03-2002 à 09:49:31
gFive on drague ?
Marsh Posté le 11-03-2002 à 09:50:25
Dark : Tu peux parler, toi, t'arrêtes pas de draguer benou et Veryfree!
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+
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! |
diantre je suis démasqué
Marsh Posté le 11-03-2002 à 09:51:15
tu en oublies un grand fou ...
Toi
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! |
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.
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! |
Alors tu me drague vraiment? 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!
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 ??
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)
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.
Marsh Posté le 11-03-2002 à 10:59:44
Autant de réponses lorsqu'il s'agit d'une fille
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
}
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
Gros bisous a tous
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 Gros bisous a tous |
On t'embrasse bien fort.
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...
Marsh Posté le 11-03-2002 à 14:22:33
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
Alors comme c'est ma première semaine, je suis plutot satisfait (c'est un peu stressant les démarrages de boulot)...
A+
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
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"
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 ...
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é
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é |
damn grilled comme dirait l'autre !
Marsh Posté le 11-03-2002 à 23:08:15
héhé
Marsh Posté le 12-03-2002 à 09:28:21
ouarf
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... |
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?
Marsh Posté le 12-03-2002 à 13:56:29
Ah ? Je crois que je vais traîner plus souvent ici moi...
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.
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 ...
Marsh Posté le 14-03-2002 à 01:03:13
clair !!!!
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 @+
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