IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Class main definition


Sujet :

Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Par défaut Class main definition
    Jai une petite question pourquoi on peut pas mettre une classe dans le méme fichier que celle de la classe main si et seulement si on enléve PUBLIC devant la classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Main{
     
    public static void main(String[] args){}
    }
     
    public class Myclass{}
    cette écriture sa marche pas

  2. #2
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    En java, on ne peut mettre qu'une classe principale par fichier. C'est une regle du langage. En revanche, on peut ajouter des sous-classes. Mais celles-ci seront liées à la classe principale (elles verront leurs methodes/données privées respectives) et si la sous classe n'est pas static, elle pourra acceder aux données de la classe principale.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Main{
    int monInt = 0;
    public class Myclass
    {
       public void setMonInt(int v)
       {
          monInt = v;
       }
    }
     
    public static void main(String[] args){}
    }

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Par défaut
    je sais ça mais si je ne veux pas des classes imbriquées ,on peut le faire je te donne un exemple

    un progamme qui prend une chaine qui la convertit en un Long et calcul son factoriel:" une classe Main CalculFactoriel et une classe qui n'est pas imbriquée dans le main Calcul"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public class CalculFactoriel {
    public static void main(String[] args) {
            long n;  
            String s;
            s=JOptionPane.showInputDialog("donnez");//saisie en mode interface
            n=Long.parseLong(s);
    System.out.println(Calcul.fact(n));//appel de la methode static de la classe calcul
        }
    class  Calcul 
    {
        static long fact(long n)
        {if (n==0)
            return 1;
        else 
            return n*fact(n-1);
     
        }
     
    }
    ce que je ne comprend pas pourquoi il faut mettre la 2éme classe sans le clef PUBLIC sinon sa ne marchera pas

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 576
    Par défaut
    Citation Envoyé par omar001 Voir le message
    ce que je ne comprend pas pourquoi il faut mettre la 2éme classe sans le clef PUBLIC sinon sa ne marchera pas
    Parce qu'un fichier .java doit obligatoirement porter le même nom que la classe publique qu'il contient, c'est une règle du langage.

    Il en résulte que :
    - Un fichier .java ne peut contenir qu'une seule classe publique qui ne soit pas imbriquée.
    - Un fichier .java qui ne contient aucune classe publique qui ne soit pas imbriquée, peut être nommé comme on veut, du moment que le nom n'est pas déjà pris.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Parce qu'un fichier .java doit obligatoirement porter le même nom que la classe publique qu'il contient, c'est une règle du langage.

    Il en résulte que :
    - Un fichier .java ne peut contenir qu'une seule classe publique qui ne soit pas imbriquée.
    - Un fichier .java qui ne contient aucune classe publique qui ne soit pas imbriquée, peut être nommé comme on veut, du moment que le nom n'est pas déjà pris.
    Un fichier .java ne peut contenir qu'une seule classe publique qui ne soit pas imbriquée dans une autre classe ou elle méme ne doit pas avoir de sous classes?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 576
    Par défaut
    Citation Envoyé par omar001 Voir le message
    Un fichier .java ne peut contenir qu'une seule classe publique qui ne soit pas imbriquée dans une autre classe ou elle méme ne doit pas avoir de sous classes?
    Ok, alors :

    Un fichier .java ne peut contenir qu'une seule classe publique. Voilà.
    (Bon, sans compter les classes imbriquées. Celles-là, elles peuvent être publiques ou pas, et on peut en avoir autant qu'on veut, on s'en fout. Les classes imbriquées n'ont pas de limitation de ce genre.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Lancement de classes Main
    Par zizou771 dans le forum Langage
    Réponses: 7
    Dernier message: 07/09/2006, 12h12
  2. Réponses: 6
    Dernier message: 31/08/2006, 15h19
  3. Mettre à jour un JPanel depuis la classe main
    Par Zorgloub dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 03/04/2006, 11h14
  4. [JAR]Création de Jar -> trouve pas la classe main
    Par Zapan dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 28/01/2006, 11h17
  5. [ERREUR] Ne retrouve pas la classe main
    Par Anathema dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 06/07/2005, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo