static.......... [JAVA] - Java - Programmation
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
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
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.
Marsh Posté le 05-05-2003 à 19:56:13
ghiby a écrit : //Dans Java_Chess.java |
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.
Marsh Posté le 05-05-2003 à 20:12:37
Taiche a écrit : Plusieurs choses : |
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
Marsh Posté le 05-05-2003 à 20:14:19
Tu peux faire voir le bout de code où c'est appelé ?
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
Marsh Posté le 05-05-2003 à 20:26:48
father c'est quoi ?
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*
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é
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 ...
Marsh Posté le 05-05-2003 à 20:40:17
ghiby a écrit : //Dans Java_Chess.java |
chess.run() ....
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 ... |
relis bien
s'il notait ces instances sans majuscules, de meme pour les methodes, on aurait vu direct
Marsh Posté le 05-05-2003 à 20:57:40
the real moins moins a écrit : relis bien |
relis bien toi même
Code :
|
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é
Merci