Clases en Java
Una clase es un tipo con nombre que declaras en un archivo .java. Pon public class Badge en un archivo llamado Badge.java. Dentro de ese tipo escribe un método static corto show que imprima ready. En un segundo archivo llamado Desk.java pon public class Desk con un main que llame Badge.show();. Compila ambos archivos y luego ejecuta java Desk. La pantalla debe mostrar una línea: ready. Aquí no cuentas hacia atrás con recursión. Nombras un tipo en su propio archivo y pides que el método de ese tipo imprima. Ese segundo tipo con nombre — una clase que no es solo el archivo que arranca — es lo que enseña esta página.
El tipo vive en su propio archivo
Hasta las páginas de métodos, casi cada demo guardaba main y los métodos auxiliares dentro de una sola public class. Eso sigue funcionando. Esta página añade a propósito una segunda public class. Badge es un nombre de tipo. No necesita ser el programa que arranca. Desk es el programa que arranca. Cada public class vive en un archivo cuyo nombre coincide exactamente con el nombre de la clase, incluidas las mayúsculas.
Crea primero Badge.java. La primera línea del tipo es public class Badge. No escribas public class Desk dentro de este archivo. No dejes aquí un nombre de clase antiguo Ladder o Gate. El compilador ata el nombre de la public class al nombre del archivo. Si el archivo es Badge.java y la línea dice public class Ladder, javac rechaza.
Dentro de las llaves de Badge, escribe static void show(). El cuerpo es una impresión: System.out.println("ready");. Mantén void en esta página. El método no devuelve un número. Solo escribe una palabra. En Badge.java no hay main en esta página. Es intencional. Una clase puede guardar métodos sin ser la clase de arranque.
Guarda Badge.java antes de compilar. El primer programa en caja es ese archivo solo.
public class Badge {
static void show() {
System.out.println("ready");
}
}
Desk arranca; Badge imprime
Crea un segundo archivo en la misma carpeta: Desk.java. Su línea public class es public class Desk. Dentro de main, escribe una llamada: Badge.show();. Esa llamada nombra el tipo Badge, un punto y luego el método show. No escribas solo show(); dentro de Desk a menos que show también viva en Desk. En esta página show pertenece a Badge, así que la llamada lleva el nombre del tipo.
public class Desk {
public static void main(String[] args) {
Badge.show();
}
}
Ambos archivos deben estar en la misma carpeta para que javac los vea juntos. Desde esa carpeta ejecuta javac Badge.java Desk.java. También puedes compilar primero Badge.java y luego Desk.java; ambos órdenes funcionan cuando los archivos están completos. Cuando paréntesis, llaves y puntos y coma coinciden, javac no escribe una línea propia. Luego ejecuta java Desk — no java Desk.java ni java Badge. Quita el final .java del comando de ejecución. Arranca la clase que guarda main. Los mismos dos tipos de comandos funcionan en Windows y en macOS.
El programa debe imprimir una línea y parar: ready. No debe pedirte que escribas. Si la terminal espera entrada de teclado, aún queda una llamada nextLine de un ejercicio antiguo en un archivo. Bórrala y mantén Badge.show(); en Desk más el método show en Badge.
Recorre la ejecución una vez. Java empieza en Desk.main. La llamada Badge.show() entra en el método del tipo Badge. Ese método imprime ready y vuelve. Luego termina Desk. La palabra en pantalla vino de Badge, no de un println escrito dentro del propio Desk. Esa separación es el punto: una clase arranca el programa; otra clase posee el auxiliar.
El nombre de archivo y public class deben coincidir
Lee el emparejamiento una vez en una tabla pequeña. Cada public class posee un nombre de archivo.
📊 file, public class, role
| Archivo | public class | Rol en esta página |
|---|---|---|
Badge.java |
Badge |
tipo que guarda show |
Desk.java |
Desk |
programa que guarda main |
Si renombras el archivo a badge.java con b minúscula mientras la línea sigue diciendo public class Badge, algunos sistemas tratan el desajuste como error. Mantén la B mayúscula en ambos sitios en esta forma de principiante. Si pones public class Badge y public class Desk en el mismo archivo, javac rechaza: una public class por archivo. Las clases auxiliares private en el mismo archivo esperan cursos posteriores. Aquí mantienes dos archivos public.
Un error frecuente es ejecutar java Badge porque acabas de escribir Badge.java. Esa clase no tiene main en esta página, así que la ejecución no arranca. Ejecuta java Desk. Otro error es escribir show(); dentro de Desk sin el prefijo Badge. cuando show solo existe en Badge. El compilador busca entonces show dentro de Desk y no lo encuentra.
Demos de recursión sobrantes pueden confundir la carpeta. Un archivo que aún se llama Ladder.java con down(3) es otro programa. Mantén la carpeta de esta lección centrada en Badge.java y Desk.java mientras aprendes la forma de dos archivos. Aquí no necesitas down.
Compila primero el tipo, luego el arranque
Puedes practicar el paso de compilar en piezas más pequeñas. Primero compila solo el tipo: javac Badge.java. Ese comando comprueba Badge aunque aún no haya arrancado nada. Un archivo de clase puede compilar sin main. Luego compila el arranque: javac Desk.java. Si Badge ya está compilado en la misma carpeta, Desk puede resolver el nombre Badge en la llamada. Por último ejecuta java Desk y confirma la única línea ready.
Si javac Desk.java dice que no encuentra el símbolo Badge, revisa tres cosas. La carpeta debe guardar Badge.java o la clase compilada Badge junto a Desk.java. La llamada debe escribir Badge con las mismas mayúsculas que el tipo. El nombre del método tras el punto debe ser show, coincidiendo con el encabezado en Badge.
Escribir System.out.println("Badge"); dentro de Desk imprime la palabra Badge. No llama al método del tipo. Mantén Badge.show(); cuando quieras la impresión que vive en Badge.
Lo que esta página aún no hace
Esta página no escribe new Badge(). Crear un objeto a partir de una clase es la página siguiente. Aquí la llamada es Badge.show() — un método static sobre el propio nombre del tipo. Tampoco guardas campos en un badge todavía. Los campos esperan una página posterior de este módulo. El trabajo ahora es solo el tipo con nombre en su propio archivo, la línea public class coincidente y una llamada que usa ese nombre de tipo.
Puedes cambiar la palabra impresa dentro de show a set y recompilar ambos archivos (o al menos Badge.java, luego ejecutar Desk otra vez). La pantalla debe seguir la cadena que pusiste en Badge. Desk mantiene la misma llamada. Otra forma de ver la separación: edita el método del tipo, mantén la llamada del arranque.
Antes de objects
Puedes declarar public class Badge en Badge.java, poner dentro static void show() y llamar Badge.show(); desde Desk.main. El nombre de archivo y el de public class coinciden. Compila el tipo y el arranque, luego ejecuta java Desk. La pantalla muestra la línea que imprime show. Una clase es ese tipo con nombre. La página siguiente es objects, donde construyes un valor a partir de una clase con new.
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior