j ' aimerai connaitre la difference entre staic et non static dans une classe permettante d instancier des objets ( sans main).
d ' apres ce que j' ai pu lire , on parle de methode ou de variable static lorsque celle ci est propre à la classe et non à un objet?
Mais cela n' est pas très clair pour moi , cela veux dire que lorsque j ' instancie la classe , un objet est créé mais avec une seule case mémoire pour cette variable static
merci
A voir également:
Static java
Difference entre methode statique et non statique - Meilleures réponses
Slt
Lorsque que tu définis une variable de type "staitc", cela signifi, qu'elle sera accessible par les autres classe du programme (même si celles-ci ne possède pas d'instance de la classe concernée).
public class TStatic {
/**
*On déclare un objet de type static (et de type final, ce qui veux dire qu'il ne peut pas être modifié).
*
**/
public static final int VARIABLE_STATIC_1 = 0;
/**
*On déclare un objet de type static (objet modifiable).
*
**/
public static int VARIABLE_STATIC_2 = 1;
}
public class Teste {
/**
*Affiche la valeur de l'objet static demandé.
*
**/
public static void main (String arg[]) {
System.out.println(TStatic.VARIABLE_STATIC_1);
TStatic.VARIABLE_STATIC_2 = 36;
System.out.println(TStatic.VARIABLE_STATIC_2);
}
}
je vous remercie de votre apport .
cependant je suis encore perdu , je comprends bien qu on peut acceder a une methode static en dehors de la classe (à laquelle elle appartient)sans instancier cette meme classe.
Cependant peut on alors parler d ' objet si on a pas besoin d ' instancier la classe?
Je me suis dirigé sur le calcul d ' un pgcd en essayant d ' utiliser une classe à part.
Voici un extrait de mon code en 2 versions :
Premiere classe methode calcul pgcd sans static
public class Pgcdite{
//variables d' instances
private int a ;
private int b ;
//constructeur
public Pgcdite ( ){
System.out.print (" a = ");
a = Lire.entierInt();
System.out.print (" b = ");
b=Lire.entierInt();
this.a = a ;
this.b = b ;
}
//methode d instance
public int pgcdIte (){
while (a !=b){
if (a>b){
a = a - b;
}else {
b = b- a ;
}
}
return a;
}
}
Deuxieme classe methode calcul pgcd avec static
public class Pgcdite{
//variables d' instances
private int a ;
private int b ;
//methodes de classe
public static int pgcdIte (int a , int b ){
while (a !=b){
if (a>b){
a = a - b;
}else {
b = b- a ;
}
}
return a;
}
Donc pour la deuxiéme classe je n ' ai pas besoin d instancier des objets , les valeurs entieres seront saisies dans la procédure main.
Slt.
Heureusement que le résultat est identiqe ! (La fonction réalisée est la même).
La seul chose qui diffère c'est que dans le premier code (le non static) tu es obligé de créer une instance de ta classe pour pouvoir utiliser la méthode demandé (comme l'a dis Ombitious_Developper, la méthode est liée à la classe) => new Pgcdite().pgcdite();. Dans l'autre cas, il te suffit juste de préciser dans quelle classe se trouve la méthode => Pgcdite().pgcdlte(12, 256);.