La plupart des programmes que je vois ont la méthode main à l'intérieur d'une classe publique, contrairement à une classe sans modificateur. ex :
public class Main
{
public static void main(String[] args)
{
System.out.println("Hello, World!");
}
}
plutôt que
class Main
{
public static void main(String[] args)
{
System.out.println("Hello, World!");
}
}
D'après ce que j'ai lu, la seule raison d'avoir une classe explicitement publique est de la rendre visible aux classes en dehors de son propre paquetage.
Le rôle de main est simplement d'agir comme un plugin à l'API de votre programme réel qui peut être facilement interchangé avec n'importe quelle autre classe avec main (les interfaces graphiques/unités centrales changent tout le temps, et doivent être conçues pour être jetables).
Si je n'ai pas l'intention que la classe soit visible par d'autres classes Java ; et si j'ai besoin qu'elle le soit, je peux créer une nouvelle classe conteneur pour une nouvelle main qui est consciente qu'elle peut être utilisée par d'autres classes, et elle serait publique.
Y a-t-il une raison de rendre les classes conteneurs de main "publiques" par défaut, autre que d'apprendre aux gens à nommer leurs classes de la même manière que la classe qui les contient (ce qui n'est pas appliqué si vous omettez public, et provoque une confusion du type "pourquoi Foo.java produit-il Main.class" ?)