Comment declarer plusieurs classes dans un fichier java

Signaler
Messages postés
3
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2010
-
 Moez -
Bonjour a tous,
Je cherche le moyen de declarer plusieurs structures de données dans un seul fichier java (donc plusieurs classes). Ces structures etant publiques pour être utilisées dans d'autres classes. J'ai essayé de declarer un "package" mais j'ai toujours ce message d'erreur: "xxxx is public should be declared in a file named xxx.java". Je n'ai pas envie de faire un fichier java par structure de données ! Il doit bien y avoir un myen de faire ca plus simplement.
Bref un peu d'aide me ferai du bien ...

exemple testé sans succés:
soit fichier toto.java, dans un sous-repertoire "truc":
package truc;
public classe test_classe1 {
   int champ_x;
   int champ_y;
}
public classe test_classe2 {
   int champ_x;
}

Fichier tutu.java:
import truc.*

methode (){
  test_classe1 x = new test_classe1();
  test_classe1 y = new test_classe2();
}

merci  d'avance

15 réponses

Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
35
Salut:

Tu peux définir autant de classes que tu veux au sein d'un même fichier source.
La seule convention que tu dois repeccter c'est :

1. Une seule classe doit être déclarée public.
2. Le fichier source doit porter le nom de la classe qui est déclarée publique.
3. Si une méthode main a était définie elle devra nécessairement être au sein de la classe déclarée publique.
meerci pour votre reponse , c une question que j ai eu dans un entretien et j pas pu la repondre :p
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
Salut,

plusieur cas possible (testé avec le jdk 1.5)

fichier Test.java

public class Test{
    ......
}
class Test2{
    ......
}
class TestN{
    ......
}

autre cas fichier Test.java
public class Test{

     private class Test2{//ici impossible d'y mettre des methodes static de plus reste non visible pour les autres


        ......
    }
    private class TestN{//ici impossible d'y mettre des methodes static de plus reste non visible pour les autres


        ......
    }

}

autre cas fichier Test.java

public class Test{


     private static class Test2{//ici possible d'y mettre des methodes static etreste non visible pour les autres



        ......

    }

    private static class TestN{//ici possible d'y mettre des methodes static et reste non visible pour les autres



        ......

    }


}

autre cas fichier Test.java

public class Test{


     public static class Test2{//ici possible d'y mettre des methodes static etreste visible pour les autres



        ......

    }

    public static class TestN{//ici possible d'y mettre des methodes static et reste visible pour les autres



        ......

    }


}

pour le dernier cas si tu veux creer une instance de Test2 tu peux faire :
Test.Test2 test2 = new Test.Test2();

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
Salut,

petite précisition concernant
Test.Test2 test2 = new Test.Test2();
cela ne vaut que si tu veux creer l'instance en dehors de la classe si tu es dans la classe mere tu peux simplement faire
Test2 test2 = new Test2();

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
174
Date d'inscription
lundi 23 septembre 2002
Statut
Membre
Dernière intervention
6 avril 2011
1
A ce sujet...


Quelqu'un peut me rappeller l'interet des InnerClass ?


Merci

[font=Times New Roman][8D] JB@WAreNew Roman
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
8
Messages postés
67
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
26 juin 2009

JBAware:
Les innerclass sont tres pratiques pour definir les listeners par exemple
pour un jbutton:
JButton jb = new JButton("Bouton");
jb.addActionListener(new ActionListener() {
   ....
});

ou encore:

class ClasseEnglobante extends JFrame {
   private ActionListener myListener = new ActionListener() {
         ...
   }
   
   ...
   public ClasseEnglobante() {
      ...
      for(int i = 0; i < 3; i++) {
         JButton jb = new JButton("Bouton " + i);
         jb.addActionListener(myListener);
         add(jb);
   }
   ...
}

En plus, les inner-class permettent d'acceder aux attributes de la classe englobante (meme si ils sont privés), c'est assez pratique des fois, meme si c'est assez sale.

Bon apres, pour les puristes, on peux toujours se passer des inner class :)
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
8
Yopla,
je me permet juste de rajouter (enfin il me semble) que dans le premier cas c est une classe anonyme et que dans le deuxieme c est une innerclass.
++ Toinou
Messages postés
67
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
26 juin 2009

Tout a fait,
mais une classe anonyme n'est elle pas une inner class?
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
8
yepla,
c vrai pour moi c est juste qu elle est réutilisable c tout !!
c etait juste un complément d information pour le vocabulaire :D
++ Toinou
bonjour
comment délcarer une liste en java ?
je ne sais pas comment faire
bonjour javascript:void(0);
comment délcarer une liste en java ?
[^^sad1][^^sad1][^^sad1][^^sad1][^^sad1][^^sad1][^^sad1][^^sad1]
Messages postés
174
Date d'inscription
lundi 23 septembre 2002
Statut
Membre
Dernière intervention
6 avril 2011
1
Euh avec un ArrayList par exemple.

JB...