Avatar ·

O que é uma "classe estática" em Java? Explique com exemplos

Olá, colegas! Comecei a estudar Java recentemente e me deparei com o termo "classe estática" (static class). O conceito de "static" para campos e métodos eu acho que já entendi — significa que eles pertencem à classe, não à instância. Mas quando se trata de uma classe inteira, fico confuso. Tentei escrever 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(); } } ``` Isso funciona. Mas se eu remover a palavra `static` antes de `class Helper`, também funciona. Qual é a diferença então? E em que situações devo usar `static` para uma classe? Li que uma "classe estática" só pode ser aninhada (nested). Mas o que isso traz? Por que não posso simplesmente criar uma classe interna normal? E também ouvi dizer que existem algumas restrições em