Static private public en java

ili -  
 ili -
Bonjour,

j'ai pas bien compris la difference quand on declare une methode ou une variable en static

est ce que quand on declare une methode static on peut l'utiliser dans une autre class

comment je dois faire pour utiliser une methode d'une classe dans une autre classe?
est ce que la declaratio de ces methodes ( en static ,public,private) joue un role sur les methode pour qu'ils seront accesibles dans tous les classes?

vous pouvez me donner des exemples merci d'avance


A voir également:

5 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
un membre de classe static est propre à la classe et non à l'objet.
Si c'est une variable, ça veux dire qu'elle n'a qu'une valeur pour tout les objets.
exemple :
class A{ int i=0;static int j=0;}
A o1,o2;
o1.i+=1; // i==1
o1.j+=1;// j==1
o2.i+=1;// i==1
o2.j+=1;// j==2
L'utilisation dans les autres classes n'a rien a voir avec.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Pour la déclaration d'une variable static, voir le commentaire de CharSnipeur
Remarque pour reprendre son exemple, il est usuel en Java d'utiliser la notation A.i et A.j plutôt que d'instancier un objet o1 et de manipuler o1.i, o1.j...

C'est à peu près pareil pour les méthodes. Une méthode est static quand elle n'est liée à aucun objet, dans ce cas on peut directement utiliser A.maMethode()
L'exemple classique est la méthode static main.

Evidemment les déclarations public, private, protected et "friendly" (quand on ne précise aucun des trois) auront une incidence sur quand on aura le droit d'utiliser A.maMethode, A.i, et A.j
La confiance n'exclut pas le contrôle
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
attention, j'ai mis "i" en non statique, d'où l'utilisation de o1. Mon but étant de montrer la différence entre statique et non statique.
0
ili
 
ce que j ai compris que,quand on declare une methode en static on peut pas l'utiliser a l exterieur de la class n est ce pas ??

et pour utiliser une methode d'une classe dans une autre il faut la declarer soit public soit private mais il faut faire les get et les set ??

merci pour les reponse
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Si ! On peux utiliser une méthode static en dehors de la classe ou elle est définie, à condition qu'elle soit déclarée public (exemple : la méthode main), protected et utilisée par des classes filles, ou friendly et utilisés dans le même package.

Prends par exemple, les méthodes static de la classe Math : Math.sqrt, Math.pow...

Par contre les méthodes get et les set ne seront pas static, leurs valeurs dépendent de l'objet courant !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ili
 
ce que j ai compris apres avoir faire un test :
que l avantage de declarer une methode static c est qu'on peut l'utiliser sans besoin d' instancier la class ou elle se trouve dedans.

public class principale
{
public static void main(String[] args){

Personne personne1 = new Personne(19,"kii","koo");
System.out.println(personne1.afficher());

int nombre = 2;
int nombre3;
nombre3 = calculer.calculer1(nombre);
System.out.println(nombre3);

}
}

la deuxieme :

public class Personne
{

private int age;
private String nom;
private String prenom;

public Personne(){
age=0;
nom = " ";
prenom =" ";

}

public Personne(int pAge,String pNom,String pPrenom){
age = pAge;
nom = pNom;
prenom = pPrenom;
}

public int getAge(){
return age;
}

public String getPrenom(){
return prenom;
}

public String getNom(){
return nom;
}


public void setAge(int pAge){
age = pAge;
}

public void setPrenom(String pNom){
nom =pNom;
}

public void setNom(String pPrenom){
prenom = pPrenom;
}

public String afficher(){
return nom + prenom + age;
}

la troixiéme :

public class calculer
{
// instance variables - replace the example below with your own
int nn = 13;
public static int calculer1(int pNombre){

return pNombre+2+ nn;
}
}
0