2009-01-22 6 views

Répondre

5

Une classe publique avec le nom de "abc" doit être dans un fichier appelé abc.java

9

Chaque fichier source doit contenir qu'une seule public class. Une classe nommée ClassName devrait être dans un fichier nommé ClassName.java, et seulement cette classe devrait être définie ici.

Les exceptions sont les classes anonymes et internes, mais en comprenant que vous êtes un débutant à Java, c'est un sujet avancé. Pour l'instant, gardez une classe par fichier.

Répondre à votre ajout: il est bon d'hériter des classes et c'est tout à fait correct. Cela n'a pas d'importance, chaque classe devrait avoir son propre fichier.

+0

Vous pouvez avoir plusieurs classes de niveau supérieur dans le même fichier, mais une seule classe * public *. Seules les classes publiques doivent se conformer à la règle du nom de fichier (en termes de comportement javac et Eclipse, un compilateur peut l'appliquer pour les types non publics - voir la spécification ci-dessus). –

6

Les classes publiques de niveau supérieur (c'est-à-dire les classes publiques qui ne sont pas imbriquées dans d'autres classes) doivent être définies dans un fichier qui correspond au nom de la classe. Donc le code pour la classe "Foo" doit vivre dans "Foo.java".

De l'language specification, section 7.6:


Lorsque les paquets sont stockés dans un système de fichiers (§7.2.1), le système hôte peut choisir d'appliquer la restriction qu'il est une erreur de compilation si un type ne se trouve pas dans un fichier sous un nom composé du nom de type plus une extension (tel que .java ou .jav) si l'une des conditions suivantes est remplie:

  • le type est désigné par un code dans d'autres unités de compilation du paquet dans lequel le type est déclaré.

  • Le type est déclaré public (et est donc potentiellement accessible à partir du code dans d'autres packages).


Cette règle, qui ne ont à suivre par les compilateurs, est à peu près respecté universellement.

6

Ok, peut-être un exemple aidera.

Dans le fichier MySuperClass.java:

public class MySuperClass { 
    // whatever goes here 
} 
public class MySubClass1 extends MySuperClass { 
    // compile error: public class MySubClass1 should be in MySubClass1.java 
} 
class MySubClass2 extends MySuperClass { 
    // no problem (non-public class does not have to be in a file of the same name) 
} 

Dans le fichier MySubClass3.java:

public class MySubClass3 extends MySuperClass { 
    // no problem (public class in file of the same name) 
} 

Est-ce que les choses plus claires?

1

Vous peut créer une nouvelle classe d'un fichier existant si elle est privée, mais vous devrait pas faire cela.

Créez un fichier par classe. Eclipse le fait pour vous, si vous créez une nouvelle classe. Pour la programmation Java, vous devez comprendre la construction des classes, des packages et des fichiers. Même si Eclipse vous aide, vous devez le savoir par vous-même. Alors commencez à lire des livres Java ou des tutoriels!

Questions connexes