Public / Static / Interface etc...

Résolu
Signaler
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
-
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
-
Salut à tous, voilà je me tente dans un tout autre projet Java, mais je n'arrive pas à comprendre un trux : J4ai créer un fichier de nommé : Personnages.java à l'intérieur s'y trouve des class
j'usque là aucun pb, mon pb c'est que lorsque je veux importer la référence cela se passe bien mais je ne peux accéder aux objets qui sont à l'interieur car il me dit : "... n'est pas public" mais lorsque je place ma class  personnage du package Personnages en public, il me dit "personnage doit être dans un fichier personnage.java" ... Snif, je pense que je m'y prend mal car en .Net je créer une classe contenant des classes et en public cela passe sans ouiné. Que dois-je faire et pourquoi ?


Merci !!!!!!!!!!! beaucoup



Chris...


Web :
Firstruner
A voir également:

11 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
En java, chaque classe doit être définie dans son propre fichier qui doit avoir le même nom que la classe.

Ce qui rend le code plus simple à organiser : on sait que telle classe est dans tel fichier, par contre, c'est sûr que ca fait une prolifération de fichiers !

Je suis d'accord avec DARKSIDIOUS.
Tu fais comme ça :

/*fichier "Action.java"*/
package Personnages;
interface Action...
/*fin fichier*/

/*fichier "Saluer.java"*/

package Personnages;
class Saluer implements Action...

/*fin fichier*/

...
yeah! vive java

Fais plutôt un fichier par classe Java. Si tu as plusieurs types de personnages, crée un package Personnages et mets chaque classe modélisant un personnage dans ce package. Tu vois ce que je veux dire?

yeah! vive java
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Oui je vois bien, mais en l'occurence j'ai un autre problème que voici : j'ai n personnage qui permettent n action c'est actions sont des classes implémentant l'interface action, et le personnage appel une fonction commune Faire() qui elle en fonction de l'objet action sélectionner fait ci ou ça. tu vois ?


Regarde un exemple :


package Personnages;


import java.util.Collections;


/**
 *
 * @author Chris
 */
interface Action {
    public void Faire();
}


class Attend implements Action {
    public void Faire() {
        System.out.println("J'attend");
    }
}


class Saluer implements Action {
    public void Faire() {
        System.out.println("Bonjour !");
    }
}


class DireAuRevoir implements Action {
    public void Faire() {
        System.out.println("Au revoir !");
    }
}

public class Personnage {
    private String pseudo;
    private int vie;
    private Action act;
   
    /** Creates a new instance of Personnages */
    public Personnage(String NomJoueur) {
        this.vie=100;
        this.pseudo = NomJoueur;
        this.act = new Attend();
    }
   
    public void SetAct(Action Act) {
        this.act=Act;
    }
   
    public void Faire() {
        act.Faire();
    }
}



Chris...


Web :
Firstruner
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Quand je set l'action en interne du fichier java y'a aucun problème, mais dès lors ou je veux le faire à l'extérieur alors là c'est galère pour moi newbie en javatization

Chris...
Web : Firstruner
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
C'est quoi ton problème avec l'interface Action ?

Que tu ne peux pas déclarer les 3 classes concrètes dans le même fichier ? Normal, Java ne le permet pas, il faut les mettre dans 3 fichiers différents (ainsi que l'interface dans un autre fichier).
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Je peux faire x fichier java avec le même nom de package ??



Chris...


Web :
Firstruner

OUI!! C'est fait pour ça. Dans mon jeu en 3D, par exemple, j'ai au moins une douzaine de classes dans le package principal. Par contre, crée un répertoire pour chaque package et mets tes fichiers .java dedans. Et compile comme ça:

javac Personnages.Action.java    depuis le répertoire Personnages

yeah! vive java
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Ok, effectivement maintenant tout s'éclair :)

merci à tous !

Chris...
Web : Firstruner
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
En fait un package, en java, c'est comme un espace de nom en C++ : un endroit où l'on définit la portée d'une classe : toutes les classes d'un même package ont accès directement aux autres classe du package. Par contre, si tu veux accèder à des classes d'un autre package, il faut les importer dans ton code. (mot clé import)
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Hmmmm, c'est ce que j'ai ajouter dans ma JForm : import Personnages

Chris...
Web : Firstruner