Avatar ·

¿Qué es una "clase estática" en Java? Explícalo con ejemplos

¡Hola, colegas! Empecé a estudiar Java recientemente y me topé con el término "clase estática" (static class). El concepto de "static" para campos y métodos creo que lo he entendido — significa que pertenecen a la clase, no a la instancia. Pero cuando se trata de una clase completa, empiezo a confundirme. Intenté escribir este código: ```java public class Main { public static class Helper { public void printMessage() { System.out.println("Hello from static class!"); } } public static void main(String[] args) { Helper h = new Helper(); h.printMessage(); } } ``` Esto funciona. Pero si quito la palabra `static` antes de `class Helper`, también funciona. Entonces, ¿cuál es la diferencia? ¿Y en qué situaciones se debe usar `static` para una clase? He leído que una "clase estática" solo puede ser anidada (nested). Pero ¿qué ventaja da eso? ¿Por qué no puedo simplemente hacer una clase interna normal? También he oído que hay algunas restricciones sobre...