Static private public en java

Fermé
ili - 18 janv. 2011 à 11:47
 ili - 18 janv. 2011 à 14:27
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


5 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
18 janv. 2011 à 12:34
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 18/01/2011 à 12:51
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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
18 janv. 2011 à 13:48
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
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
18 janv. 2011 à 13:06
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
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