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?
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). –