La primera regla dada sobre el nombre de la clase Java dice “El nombre del archivo Java y el nombre de la clase deben ser iguales” ¿Es cierto? ¿Qué sucede si no es así? Veamos…
Cuando se viola la regla anteriormente mencionada, aparecerá un mensaje de error del compilador como se muestra a continuación:
/***** Nombre del Archivo: Test.java ******/ public class JavaDesdeCero { public static void main(String[] args) { System.out.println("Hello world"); } }
Salida:
javac Test.java
C:\Users\Alex\Desktop>javac Test.java Test.java:1: error: class JavaDesdeCero is public, should be declared in a file named JavaDesdeCero.java public class JavaDesdeCero ^ 1 error
Pero el mito puede ser violado de tal manera que podemos compilar el archivo anterior. ¿Cómo? de la siguiente manera:
/***** Nombre Archivo: Test.java ******/ class JavaDesdeCero { public static void main(String[] args) { System.out.println("Hello world"); } }
- Paso 1: Creará un Test.class (byte code) sin ningún mensaje de error ya que la clase no es pública.
javac Test.java
- Paso 2: Ahora la salida será “Hello world”
java JavaDesdeCero
El mito sobre que el nombre de archivo y el nombre de clase deben ser el mismo sólo es así cuando la clase se declara en
public
.
Ejemplo Práctico: Nombre Archivo =! Nombre Clase
Con las características anteriores se pueden hacer más milagros. Es posible tener muchas clases en un archivo java. Para fines de depuración este enfoque puede ser utilizado. Cada clase se puede ejecutar por separado para probar sus funcionalidades (solo con una condición: no se debe utilizar el concepto de herencia). Pero, en general, es bueno seguir el mito.
Por ejemplo:
/*** Nombre Archivo: Test.java ***/ class Aprende { public static void main(String[] args){ System.out.println("Aprende"); } } class JavaDesdeCero { public static void main(String[] args){ System.out.println("Java desde Cero"); } }
Cuando el archivo anterior se compila como javac Test.java creará dos archivos .class (Aprende.class y JavadesdeCero.class).
- Como cada clase tiene un main() separado, se pueden probar individualmente.
- Cuando se ejecuta
java Aprende
, la salida es “Aprende” - Cuando se ejecuta
java JavaDesdeCero
, la salida es “Java desde Cero”
¡Comparte con los demás este mito sobre el nombre de la clase en Java! 😉
Nombre de archivo y nombre de la clase
- Descifrando el Mito - 10/1010/10
0 comentarios
[…] Por convención, el nombre de la clase principal (clase que contiene el método main) debe coincidir con el nombre del archivo que contiene el programa. ¿ES UN MITO? Compruébalo en este enlace. […]