Probème de variable
Résolu
speedzealot
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
speedzealot Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
speedzealot Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
bonjour a tous, en simplifiant mon code, cela donne ca :
Pourquoi ? et comment y remedier ?
merci de vos reponses
public class Mere { protected Integer integer; private Thread t; public Mere() { integer = 1; t = new Thread(new ClasseFille()); } public void update() { if (t.getState() == State.NEW) t.start(); } }
public class ClasseFille extends Mere implements Runnable { public ClasseFille() { } public void run() { System.out.println(integer); //et au lieu de m'afficher 1, il m'affiche null... } }
Pourquoi ? et comment y remedier ?
merci de vos reponses
A voir également:
- Probème de variable
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp - Forum Microsoft Office
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
- Vérifiez la variable d'environnement TEMP. QUE FAIRE ????? ✓ - Forum Microsoft Office
- Range avec une Variable ✓ - Forum VB / VBA
je vais developper mon probleme :
J'utilise Slick2D et ma classe mere c'est ma fenetre de jeu.
je voudrai creer un nouveau thread depuis cette classe mere et, que ce nouveau thread hérite des variables de classes de ClasseMere (parce que je n'ai pas vraiment envis de creer des accesseurs pour ces 10 parametres, ni meme de changer la portee de ces parametres à "package", ca me compliquer trop le travail de maintenance et ce serai plus lourd a l'execution, sachant que ce thread va faire une grosse serie d'action assez lourde, sans s'arreter)
Donc ce thread j'ai voulu le faire implementer l'interface Runnable.
peut-on vraiment creer un heritage de cette maniere en passant par la classe mere qui est deja instanciée ou dois-je revenir sur une methode moins subtile ?
L'héritage c'est pour des classes afin qu'elles génèrent des objets qui ont des comportement communs, plus une spécificité pour l'objet de la classe fille.
On parle donc de deux objets totalement distincts, qui n'interagissent pas entre eux, c'est leur code qui est commun, pas leurs états.
Avec :
Ici ça va fonctionner, on va bien avoir integer==1 dans l'objet ClasseFille car le constructeur a appelé le code de Mere.
Avec :
Ici ça ne fonctionne pas, car l'objet de ClasseFille est construit sans rien faire, il faudrait appeler la méthode init() pour l'objet fille - de la même manière que pour l'objet Mere - afin que cela fonctionne.
Si j'ai bien compris ce que tu cherches à faire, c'est suivre dans tous les objets de ClasseFille l'évolution de l'état d'un objet Mere en particulier. Mais ce n'est pas de l'héritage.
Passer en paramètre l'objet Mere à ClasseFille (qui n'est de toute façon pas une classe fille puisque l'héritage ne sert à rien dans ton cas) est pour moi la manière la plus propre de faire. Il en existe une manière plus directe mais si tu peux éviter c'est mieux, voici un exemple (on appelle ça des inner classes) :
Remarque : je te conseilles de renommer tes classes Mere et Fille, car il n'y a vraiment aucune relation d'héritage ici.
Une troisième manière de faire, serait de mettre les deux classes en une (à ne pas utiliser si BasicGame implémente déjà Runnable, c'est à dire si la classe Mere hérite d'une méthode run() que ce code viendrait remplacer à tort).
(mes classes ne s'appelles pas du tout ClasseMere et ClasseFille, c'etait juste pour les rendre plus explicite dans ma demande ^^)
enfin la ca marche tres bien :) et les threads fonctionnent bien simultanément :)