O que está acontecendo quando um membro dentro de um classé declarado como static..? Esses membros podem ser acessados sem instanciar o class. Portanto, criar classe externa (classe de nível superior) staticnão tem significado. Portanto, não é permitido.
Mas você pode definir classes internas como estáticas (como membro da classe de nível superior). Em seguida, essa classe pode ser acessada sem instanciar a classe de nível superior. Considere o seguinte exemplo.
public class A {
public static class B {
}
}
Agora, dentro de uma classe diferente C, a classe Bpode ser acessada sem criar uma instância da classe A.
public class C {
A.B ab = new A.B();
}
staticas classes também podem ter non-staticmembros. Somente a classe fica estática.
Mas se a staticpalavra-chave for removida da classe B, ela não poderá ser acessada diretamente sem criar uma instância de A.
public class C {
A a = new A();
A.B ab = a. new B();
}
Mas não podemos ter staticmembros dentro de uma non-staticclasse interna.