static en Java
Escribe una clase Tag en Tag.java con un método static static void ping() que imprime ok. En Yard.java, desde main llama Tag.ping(); y no escribas new Tag() en esta página. Compila ambos archivos y ejecuta java Yard. La pantalla debe mostrar una línea: ok. El método pertenece al nombre de clase Tag, no a una variable de objeto. Llamar a través del nombre de clase es lo que enseña esta página.
Un método en el nombre de clase
En la página de métodos de instancia escribiste j.bump() después de new Jar(3). Esa llamada necesitaba un objeto. Un método static no lo necesita. Escribes Tag.ping(); con el nombre de clase. Java ejecuta ese método sin construir primero un objeto Tag en esta página.
Crea primero Tag.java. La línea public class es public class Tag. No dejes un nombre de clase antiguo Jar o Tin aquí. Dentro de las llaves escribe un método:
static void ping() { System.out.println("ok"); }
En la primera demo no hay campo ni constructor. En Tag.java no hay main. Guarda antes de compilar. La palabra static se sienta en la cabecera del método antes de void. Sin static, una llamada posterior Tag.ping(); desde Yard no coincidirá con la forma de método de instancia que quiere esta página.
public class Tag {
static void ping() {
System.out.println("ok");
}
}
Yard llama Tag.ping
Crea Yard.java en la misma carpeta. Su línea public class es public class Yard. Dentro de main, escribe una llamada: Tag.ping();. No escribas Tag t = new Tag(); en esta página. No hagas de t.ping(); el camino de la lección. El nombre de clase antes del punto basta.
Mantén Yard como la clase que guarda main. No pongas main dentro de Tag en esta lección. Si aún queda un archivo Desk de la página de métodos de instancia en la carpeta, no ejecutes java Desk en esta lección — ejecuta java Yard después de compilar Tag.java y Yard.java.
public class Yard {
public static void main(String[] args) {
Tag.ping();
}
}
Desde la carpeta que guarda ambos archivos, ejecuta javac Tag.java Yard.java. Puedes compilar primero Tag.java y luego Yard.java cuando ambos estén completos. Cuando paréntesis, llaves y puntos y coma coinciden, javac no escribe una línea propia. Luego ejecuta java Yard — no java Yard.java ni java Tag. Quita el final .java del comando de ejecución. Arranca la clase que guarda main. Los mismos comandos funcionan en Windows y en macOS.
El programa debe imprimir una línea y parar: ok. No debe pedirte que escribas. Si la terminal espera teclado, aún queda una llamada nextLine de un ejercicio antiguo en un archivo. Bórrala y mantén Tag.ping(); en Yard, con static void ping en Tag.
Recorre la ejecución una vez. Java empieza en Yard.main. La llamada Tag.ping() encuentra el método static en la clase Tag y ejecuta su cuerpo. El cuerpo imprime ok. No se construyó ningún objeto. La pantalla muestra ok. Nada más debe imprimirse. Si ves 4 o 5, aún estás ejecutando un programa Desk antiguo de la lección bump.
Si escribes ping(); sin Tag. delante dentro de Yard.main, javac lo rechaza en esta forma. El método static aún necesita su nombre de clase (o un estilo de import cuidadoso que aún no usas). Mantén Tag.ping();. Si pones void sin static, entonces Tag.ping(); es el tipo de llamada equivocado para un método de instancia — vuelve a poner static. La cabecera debe verse como static void ping(), no solo void ping(), y no static int ping() para esta demo de impresión.
Tag.ping y j.bump lado a lado
Una tabla corta mantiene claras las dos formas de llamada.
📊 static vs instance call
| Llamada | ¿Necesita un objeto primero? |
|---|---|
Tag.ping(); |
no — el nombre de clase basta |
j.bump(); |
sí — después de Jar j = new Jar(3); |
static void ping() |
método en la clase |
void bump() |
método en cada objeto |
La tabla es solo un recordatorio. La línea que mantienes en esta página es Tag.ping(); en Yard, con static void ping() en Tag. |
Comparado con métodos de instancia
En la página de métodos de instancia, j.bump() cambiaba fill de un jar. Eso sigue funcionando. Esta página no cambia un campo. Solo imprime ok desde un método static para que veas la llamada con el nombre de clase. Una demo sobrante Jar j = new Jar(3); j.bump(); es otra lección. Para esta página mantén Tag y Yard y Tag.ping();.
Aún puedes construir objetos en otros días. Esta lección elige a propósito el camino static. No mezcles j.bump() y Tag.ping() en la misma demo de Yard en esta página. Un camino claro basta: static en el método, nombre de clase antes de la llamada, impresión ok. Cuando más adelante necesites ambos estilos en un programa, mantén cada llamada honesta — objeto antes de métodos de instancia, nombre de clase antes de métodos static — para que el lector vea cuál tipo quisiste.
No necesitas new Tag para esta llamada
Como ping es static, Yard no asigna un objeto Tag antes de la llamada. Escribir Tag t = new Tag(); y luego t.ping(); puede compilar para un método static en muchos entornos, pero no es la forma que enseña esta página. Quédate solo con Tag.ping();. Si la pantalla muestra 4 o 5, aún corre una demo Desk bump antigua — pasa a java Yard.
Si javac dice que no encuentra el símbolo ping en Tag, comprueba que la cabecera del método incluye static y que ambos archivos están en la misma carpeta. Si ejecutas java Tag y no hace nada útil, arrancaste la clase equivocada — arranca Yard, que guarda main.
Lo que queda para access
Esta página usa una clase public y un método static visible en el paquete en la misma carpeta. Una página posterior — access — muestra palabras como public y private en miembros. Quédate aquí con la llamada static. No inventes private static en esta página salvo que ya lo conozcas; el objetivo de la lección es Tag.ping(); con static void ping().
Cuando la carpeta aún guarda Jar.java o Desk.java, déjalos o bórralos solo si confunden el comando de compilación. Ejecuta java Yard después de compilar el par Tag y Yard de esta lección.
Antes de access
Puedes escribir static void ping() { System.out.println("ok"); } en Tag y desde Yard llamar Tag.ping(); sin objeto. Compila ambos archivos y ejecuta java Yard. La pantalla muestra ok. El método static corrió en el nombre de clase. La página siguiente es access, donde controlas qué nombres pueden ver otras clases.
Mantén static en el método. Mantén el nombre de clase antes de la llamada. Mantén main en Yard. Esos tres hábitos son el punto de control de esta página antes de seguir.
🧠 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