Publicado en Tema 5 • Principios de la POO

Tema 5 – Ejercicio 4

Uso de atributos y métodos estáticos en Java

📄 Enunciado

Vamos a implementar una clase llamada ContadorObjetos qué tenga un atributo estático para llevar la cuenta del número total de objetos creados.

Además, tendrá un método estático para mostrar cuántos objetos se han creado hasta el momento.

📌 Requisitos

  • Crear la clase ContadorObjetos.
  • Definir un atributo estático totalObjetos inicializado a 0.
  • Incrementar el contador cada vez qué se crea un objeto.
  • Crear un método estático qué muestre el total de objetos creados.
  • Desde otra clase, crear varios objetos y mostrar el contador.

✅ Clase ContadorObjetos

package Ejercicios.ejercicio4;

class ContadorObjetos {

    // Atributo estático
    private static int totalObjetos = 0;

    // Constructor
    public ContadorObjetos() {
        totalObjetos++;
    }

    // Método estático
    static void mostrarTotalObjetos() {
        System.out.println(
            "Número total de objetos creados hasta el momento: " + totalObjetos
        );
    }
}

✅ Clase Main

package Ejercicios.ejercicio4;

public class Main {

    public static void main(String[] args) {

        // Mostrar total inicial
        ContadorObjetos.mostrarTotalObjetos();

        // Crear objetos
        ContadorObjetos obj1 = new ContadorObjetos();
        ContadorObjetos obj2 = new ContadorObjetos();
        ContadorObjetos obj3 = new ContadorObjetos();

        // Utilizar el método estático
        ContadorObjetos.mostrarTotalObjetos();
    }
}

🧠 Explicación

El atributo totalObjetos es estático, lo qué significa qué pertenece a la clase y no a cada objeto individual.

Cada vez qué se crea una nueva instancia de ContadorObjetos, el constructor incrementa el valor del contador compartido por todos los objetos.

El método mostrarTotalObjetos() también es estático, por lo qué puede llamarse directamente desde la clase sin necesidad de crear un objeto.

❓ Preguntas de reflexión

¿qué diferencia hay entre un atributo/método estático y uno no estático?

Un atributo o método estático pertenece a la clase y es compartido por todas las instancias. Un atributo o método no estático pertenece a cada objeto de forma independiente.

¿qué pasaría si totalObjetos no fuera estático?

Cada objeto tendría su propio contador, por lo qué no se podría llevar la cuenta total de objetos creados. El valor siempre sería independiente en cada instancia.

¿Por qué podemos llamar al método mostrarTotalObjetos sin crear una instancia?

¿qué es un método estático. Los métodos estáticos pertenecen a la clase y se pueden invocar directamente usando el nombre de la clase.

🏁 Conclusión

Este ejercicio muestra cómo los atributos y métodos estáticos permiten compartir información común entre todos los objetos de una clase, siendo muy útiles para contadores, configuraciones globales o utilidades generales.