Java >> Tutoriel Java >  >> Tag >> class

Pourquoi le nom du fichier Java doit-il être identique au nom de la classe publique ?

La question est la suivante :"Pouvons-nous conserver des noms différents pour le nom de la classe Java et le nom du fichier Java ?"

Oui, nous pouvons conserver le nom différent pour le nom de fichier java et le nom de classe java si et seulement si la classe n'est pas publique.

Il y a deux cas, dont nous parlerons ici...

  1. Cas 1 :Nous prenons un nom différent si la classe n'est pas publique
  2. Cas 2 :Nous prenons un nom différent si la classe est publique

Cas 1 :Nous prenons un nom différent si la classe n'est pas publique

A l'aide d'un exemple, nous verrons ce qui se passera si la classe n'est pas publique et dans ce cas, nous pouvons prendre un nom différent pour la classe java et le fichier java cela signifie qu'il n'est pas obligatoire d'avoir le même nom pour la nom de classe java et nom de fichier java dans ce cas.

Exemple :

class ClassIsNotPublic{
	public static void main(String[] args){
		String str1 = "This class is not public so we can take different name for the java filename and java classname";
		String str2 = "This class is not prefixed with public keyword that's why it is not public";

		System.out.println("What will happen if we take non public class " +str1);
		System.out.println("Why it is not public class "+ str2);
	} 
}

Sortie

E:\Programs>javac abc.java [abc is java filename]

E:\Programs>java ClassIsNotPublic [ClassIsNotPublic is java classname]
What will happen if we take non public class This class is not public so 
we can take different name for the java filename and java classname
Why it is not public class This class is not prefixed with public keyword 
that's why it is not public

Cas 2 :Nous prenons un nom différent si la classe est publique

Si nous avons déclaré une classe comme "publique", alors, dans ce cas, le nom de fichier java et le nom de classe java doivent être identiques ou en d'autres termes, nous ne pouvons pas prendre d'autre nom pour le nom de classe java et le nom de fichier java dans le cas d'un classe publique.

Exemple :

public class ClassIsPublic{
	public static void main(String[] args){
		String str1 = "This class is public so we can't take different name for the java filename and java classname";
		String str2 = "This class is prefixed with public keyword that's why it is public class";

		System.out.println("What will happen if we take public class"+" " +str1);
		System.out.println("Why it is public class "+ str2);
	} 
}

Sortie

E:\Programs>javac xyz.java
xyz.java:1: error: class IfClassIsPublic is public, should be 
declared in a file named IfClassIsPublic.java
public class IfClassIsPublic{
       ^
1 error

Nous allons maintenant voir pourquoi il faut prendre le même nom pour le nom du fichier java et le nom de la classe java dans le cas d'une classe publique ?

Il y a peu de points pour comprendre pourquoi il faut obligatoirement prendre le même nom ?

  • Supposons que nous ayons un fichier java nommé "java1000" dans ce fichier java, nous avons 1000 classes et dans ce cas, si nous voulons trouver une seule classe dans 1000 classes, il sera donc plus difficile à trouver et cela créera un beaucoup de confusion.
  • Dans ce fichier Java, nous avons 1000 classes, nous savons que trouver n'importe quelle classe dans 1000 classes sera difficile, donc, dans ce cas, presque une classe sera publique et cette classe publique contiendra la méthode main () donc toutes les classes les objets seront appelés à partir de la classe de méthode main() (c'est-à-dire la classe publique), donc si nous prenons le nom de fichier java et le nom de la classe publique seront les mêmes, il sera facile de trouver n'importe quelle classe dans la classe publique.
  • Si notre nom de fichier java et notre nom de classe publique seront les mêmes, alors en utilisant le nom de fichier java, nous pouvons facilement atteindre la classe publique (classe de méthode main()) et si nous atteignons la classe publique, alors à partir de cette classe, nous pouvons atteindre n'importe quelle autre classe également à partir des 1000 classes et nous savons que tous les objets de classe seront appelés à partir de la classe de méthode main() (c'est-à-dire la classe publique).

Balise Java