Cargando...

Métodos de instancia en Java

Escribe una clase Jar en Jar.java con un campo int llamado fill, un constructor Jar(int n) que pone fill = n;, y un método de instancia void bump() que ejecuta fill = fill + 1;. En Desk.java, construye un jar con Jar j = new Jar(3);, llama j.bump(); y luego imprime j.fill. Compila ambos archivos y ejecuta java Desk. La pantalla debe mostrar una línea: 4. El método corre sobre ese único objeto y cambia su campo. Llamar un método a través de la variable del objeto es lo que enseña esta página.

Un método que pertenece al objeto

En las páginas de métodos anteriores llamabas un nombre desde main sin un objeto delante. Aquí el método vive en la clase, pero lo alcanzas a través de una variable jar: j.bump(). Esa llamada usa los campos del jar que nombra j. Un segundo jar guarda su propio fill.
Crea primero Jar.java. La línea public class es public class Jar. No dejes un nombre de clase antiguo Tin o Box aquí. Dentro de las llaves declara int fill;. Escribe el constructor Jar(int n) { fill = n; } con nombres distintos para que esta página no necesite this. Luego escribe el método de instancia:
void bump() { fill = fill + 1; }
En Jar.java no hay main. Guarda antes de compilar. La cabecera del método necesita void porque bump no devuelve un valor para imprimir. El constructor sigue sin void — mantén clara esa diferencia.

Jar with bump method

java
public class Jar {
    int fill;

    Jar(int n) {
        fill = n;
    }

    void bump() {
        fill = fill + 1;
    }
}

Desk construye un jar y llama bump

Crea Desk.java en la misma carpeta. Su línea public class es public class Desk. Dentro de main, escribe tres líneas en orden: Jar j = new Jar(3);, luego j.bump();, luego System.out.println(j.fill);. El constructor guarda 3. La llamada j.bump() suma uno. La impresión muestra el valor nuevo.
Mantén Desk como la clase que guarda main. No pongas main dentro de Jar en esta lección. Si aún queda un archivo Lab de la página this en la carpeta, no ejecutes java Lab en esta lección — ejecuta java Desk después de compilar Jar.java y Desk.java.

Desk one bump

java
public class Desk {
    public static void main(String[] args) {
        Jar j = new Jar(3);
        j.bump();
        System.out.println(j.fill);
    }
}

Desde la carpeta que guarda ambos archivos, ejecuta javac Jar.java Desk.java. Puedes compilar primero Jar.java y luego Desk.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 Desk — no java Desk.java ni java Jar. 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: 4. 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 new Jar(3), j.bump() y la impresión en Desk, con bump en Jar.
Recorre la ejecución una vez. Java empieza en Desk.main. La expresión new Jar(3) construye un jar y guarda 3 en fill. La llamada j.bump() entra en bump sobre ese mismo objeto. El cuerpo escribe fill = fill + 1, así que fill pasa a ser 4. Luego main imprime j.fill y la pantalla muestra 4.
Si escribes bump(); sin j. delante, javac lo rechaza en esta forma de main. El método de instancia necesita un objeto. Si escribes Jar.bump(); como si fuera una llamada static, esa es la idea de la lección siguiente — no de esta página. Mantén j.bump();.

Comparado con this y con la asignación directa al campo

En la página this guardabas un campo dentro del constructor con nombres que coincidían. Eso sigue funcionando. Esta página añade un método que puedes llamar más tarde, después de que el objeto ya exista. Una demo sobrante Tin t = new Tin(7); con this.size = size; es otra lección. Para esta página mantén Jar y Desk y j.bump();.
Aún podrías escribir j.fill = j.fill + 1; en main. Esta lección mueve ese cambio a bump para que el objeto lleve la acción. Imprimir j solo con System.out.println(j); no muestra un 4 limpio. Imprime j.fill para ver el número guardado.

Dos bumps en un jar

Puedes llamar j.bump(); dos veces antes de imprimir. Empieza con new Jar(3), un bump hasta 4, otro bump hasta 5, luego imprime. Esa comprobación cabe en una segunda demo pequeña de Desk.

Desk two bumps

java
public class Desk {
    public static void main(String[] args) {
        Jar j = new Jar(3);
        j.bump();
        j.bump();
        System.out.println(j.fill);
    }
}

Compila y ejecuta de nuevo: javac Jar.java Desk.java, luego java Desk. La pantalla debe mostrar 5. Cada llamada a bump corrió sobre el mismo objeto y sumó uno más. Escribir Jar k = j; no construye un segundo objeto — usa dos llamadas new Jar(...) cuando quieras dos fills separados. Para esta página, dos bumps en un jar bastan para ver el método correr dos veces.
Si la pantalla aún muestra 3, puede que falten las llamadas bump o que main aún imprima antes de llamarlas. Si muestra 7 u otro número sobrante, puede quedar una demo antigua de Tin en el archivo. Mantén new Jar(3) y las llamadas bump.

Lo que queda para static

Esta página llama el método a través de un objeto: j.bump(). Una página posterior — static — muestra métodos y campos que pertenecen al nombre de la clase mismo sin un objeto delante. Quédate aquí con la llamada de instancia. No inventes static void bump() en esta página a menos que ya lo conozcas; el objetivo de la lección es la llamada sobre el objeto.
Si javac no encuentra Jar al compilar Desk.java, comprueba que Jar.java esté en la misma carpeta y que la línea de clase sea public class Jar. Si la pantalla muestra 0, puede que al constructor le falte el guardado, o que bump nunca corra — mantén Jar(int n) { fill = n; } y j.bump(); antes de la impresión.
Cuando la carpeta aún guarda Tin.java o Lab.java de la página this, déjalos o bórralos solo si confunden tu comando de compilación. Ejecuta java Desk después de compilar el par Jar y Desk de esta lección.

Antes de static

Puedes declarar int fill;, escribir Jar(int n) { fill = n; } y void bump() { fill = fill + 1; }, y desde Desk ejecutar Jar j = new Jar(3);, j.bump(); y luego imprimir j.fill. Compila ambos archivos y ejecuta java Desk. La pantalla muestra 4. El método de instancia corrió sobre ese objeto y cambió su campo. La página siguiente es static, donde algunos miembros pertenecen al nombre de la clase sin necesitar una variable de objeto delante.
Mantén void en el método, no en el constructor. Mantén el objeto delante de la llamada: j.bump();. Mantén la impresión en j.fill. Esos tres hábitos son el punto de control de esta página antes de seguir.

🧠 Pon a Prueba tu Conocimiento

Listo para Empezar

Pon a Prueba tu Conocimiento

Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema

❓
5
Preguntas
🎯
70%
Para Aprobar
♾️
∞
Tiempo
🔄
∞
Intentos

📝 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