[JAVA]static..........

static.......... [JAVA] - Java - Programmation

Marsh Posté le 05-05-2003 à 19:38:38    

Dans un main, on est obligé d'appeler des fonctions 'static' ?
L'ensemble des fonctions que j'appele doivent etre 'static' ?
 
Je suis peut etre a l'ouest, dites le moi je suis un peu fatigué  :sleep:  
 
Merci

Reply

Marsh Posté le 05-05-2003 à 19:38:38   

Reply

Marsh Posté le 05-05-2003 à 19:44:58    

Dans l'ordre :
* oui si tu parles des fonctions de la classe où tu as défini le main. Sinon, il va de soit que tu peux tout à fait faire des trucs genre  
String s = "graou";
System.out.println(s.concat("hop" ));
concat() est une méthode de String qui n'est pas statique.
* oui.
 
Ton main est static donc forcément il ne peut avoir accès qu'à des méthodes statiques [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 05-05-2003 à 19:52:19    

//Dans Java_Chess.java
 
public static void main(String[] args){
 Jeu Chess = new Jeu();
 Jeu.Run();
}
 
 
//Dans Jeu.java
public class Jeu{
....
....
public void Run(){....}
....
}
-------------------------------------------------
Run doit etre defini en static ?
Cette fonction est exterieur a la classe ou le main est defini, je l'ai separé pour cela, mais j'arrive au meme pb


Message édité par ghiby le 05-05-2003 à 19:54:21
Reply

Marsh Posté le 05-05-2003 à 19:55:38    

Plusieurs choses :
* nomme tes méthodes en commençant par une lettre minuscule. Genre run() ou encore convertToString().
* la méthode run() est la plupart du temps associée au fait que ta classe Jeu va implémenter java.lang.Runnable (ou dériver de java.lang.Thread) ; appeler une méthode run() sans que cela soit le cas peut conduire à des malentendus ou de mauvaises interprétations.
* ici, comme tu as appelé le constructeur de Jeu, tu as une instance de ta classe. Tu peux donc appeler n'importe quelle méthode publique de ton instance.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 05-05-2003 à 19:56:13    

ghiby a écrit :

//Dans Java_Chess.java
 
public static void main(String[] args){
 Jeu Chess = new Jeu();
 Jeu.Run();
}
 
 
//Dans Jeu.java
public class Jeu{
....
....
public void Run(){....}
....
}
-------------------------------------------------
Run doit etre defini en static ?
Cette fonction est exterieur a la classe ou le main est defini, je l'ai separé pour cela, mais j'arrive au meme pb
 


non ! Run() n'a pas besoin d'etre static si on suppose que c'est une méthode qui s'applique sur une instance de ta classe Jeu.


---------------
get amaroK plugin
Reply

Marsh Posté le 05-05-2003 à 20:12:37    

Taiche a écrit :

Plusieurs choses :
* nomme tes méthodes en commençant par une lettre minuscule. Genre run() ou encore convertToString().
* la méthode run() est la plupart du temps associée au fait que ta classe Jeu va implémenter java.lang.Runnable (ou dériver de java.lang.Thread) ; appeler une méthode run() sans que cela soit le cas peut conduire à des malentendus ou de mauvaises interprétations.
* ici, comme tu as appelé le constructeur de Jeu, tu as une instance de ta classe. Tu peux donc appeler n'importe quelle méthode publique de ton instance.


 
C'est en recopiant pour les majuscules. C'est ok pour run() je comprends la confusion. Mais je ne peux pas l'appeler.
 
C:\Documents and Settings\Ghiby\Bureau\Java_Chess\Java_Chess.java:16: non-static method removeKey(father) cannot be referenced from a static context
 
"removeKey(father)" = Run() de mon exemple


Message édité par ghiby le 05-05-2003 à 20:14:31
Reply

Marsh Posté le 05-05-2003 à 20:14:19    

Tu peux faire voir le bout de code où c'est appelé ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 05-05-2003 à 20:24:21    

public class TestBinarySearchTree{
 
  public static void main(String[] args){
 
 BinarySearchTree bt = new BinarySearchTree() ; // arbre vide
    ....
    ...
    ...
    bt.removeKey(father);
  }  
}
 
Je construis l'arbre dans le constructeur, C simplement un exercice pour comprendre une suppression à la racine. removeKey est la premiere methode d'instance que j'appelle aux pointillés il y a rien d'interressant.
 
public void removeKey(int key) {...} //dans une autre classe


Message édité par ghiby le 05-05-2003 à 20:25:51
Reply

Marsh Posté le 05-05-2003 à 20:26:48    

father c'est quoi ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 05-05-2003 à 20:32:34    

c'est un entier, j'ai 2 types de remove, (je test un peu mon pouvoir d'improvisation et il est mauvais) removeKey(Node node) et removeKey(int key), j'ai 2 types d'arbres differents. Mais je crois que je vais faire une pause, recommencer proprement le code. Je me suis posé une question sur la suppression et j'ai rajouté ma sauce de partout, ce n'est pas comme ca qu'il faut travailler. Je recommencerais.
 
Merci de ta patience, et certainement a bientot sur le forum
 
*ghiby qui va pas tarder a dormir* :hello:

Reply

Marsh Posté le 05-05-2003 à 20:32:34   

Reply

Marsh Posté le 05-05-2003 à 20:35:07    

OK, ba pas d'problème :)
Sinon, pour le coup du static, j'pense pas que ça viendra de ça passke je fais tous les jours des appels à des méthodes publiques non-statiques une fois que j'ai l'instance de ma classe. Heureusement d'ailleurs passke sinon on serait super limité [:ddr555]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 05-05-2003 à 20:38:58    

doit y avoir un truc que tu nous a pas dis parce que ce que tu as montré comme code devrait fonctionner ...


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

Marsh Posté le 05-05-2003 à 20:40:17    

ghiby a écrit :

//Dans Java_Chess.java
 
public static void main(String[] args){
 Jeu chess = new Jeu();
 Jeu.run();
}
 
 
//Dans Jeu.java
public class Jeu{
....
....
public void run(){....}
....
}
 
 

chess.run() .... :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-05-2003 à 20:40:39    

benou a écrit :

doit y avoir un truc que tu nous a pas dis parce que ce que tu as montré comme code devrait fonctionner ...

:non: relis bien
s'il notait ces instances sans majuscules, de meme pour les methodes, on aurait vu direct :o


Message édité par the real moins moins le 05-05-2003 à 20:41:04

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-05-2003 à 20:57:40    


relis bien toi même  :o
 

Code :
  1. public class TestBinarySearchTree{
  2. public static void main(String[] args){
  3. BinarySearchTree bt = new BinarySearchTree() ; // arbre vide  
  4.    ....
  5.    ...
  6.    ...
  7.    bt.removeKey(father);
  8. }
  9. public void removeKey(int key) {...} //dans une autre classe


Message édité par benou le 05-05-2003 à 22:58:15

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

Sujets relatifs:

Leave a Replay

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