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