/ / De que servem as classes estáticas em Java? - java, classe, estático

Quais são as classes estáticas em Java? - java, classe, estática

Eu li que posso definir uma classe como static, mas não entendo por que preciso fazer isso. Qual a utilidade das classes estáticas? Quando preciso usá-las? Gostaria de receber exemplos.

Respostas:

5 para resposta № 1

o static A palavra-chave para classes é permitida apenas para classes aninhadas, dentro de outra classe.

A diferença entre classes aninhadas não estáticas(também conhecidas como classes internas) e classes aninhadas estáticas é que os objetos dos primeiros sempre têm um objeto "externo" correspondente, enquanto os objetos dos últimos não têm (eles só têm acesso em nível privado e estão dentro do espaço para nome) )


Aqui um exemplo:

class Outer {
static class StaticNested {}
class Inner {}
}

Agora podemos criar objetos da seguinte maneira:

Outer o = new Outer();
Outer.StaticNested sn = new Outer.StaticNested();
Outer.Inner i = o.new Inner();

o é o objeto externo correspondente ao i, enquanto sn não tem esse elemento. (Normalmente você criará objetos de classes internas a partir de métodos dos objetos externos, aí você pode simplesmente escrever new Inner() e leva this como o objeto externo.)

De fora de Inner não temos como obter o objeto externo correspondente, mas dentro dele podemos escrever Outer.this para referenciar o objeto externo. Isso funciona em vários níveis, se necessário.


4 para resposta № 2

Você pode definir um classe interna como estática assim (para ser mais detalhada, a classe se tornará uma classe aninhada estática):

class A {
public static class Inner { }
}

Isso significa que a classe Inner está de alguma forma relacionado a A, mas não anexado a uma instância específica. É principalmente uma maneira de criar algum tipo de relação entre os dois.

Se você é iniciante em Java, sugiro que nãoperca muito tempo tentando encontrar algum aplicativo útil para isso. Lembre-se de que essa possibilidade existe e, quando você entender melhor a programação orientada a objetos em geral e o Java em particular, você encontrará isso novamente.

É importante observar que apenas classes internas podem ser definidas como estáticas, classes "normais" não.


0 para resposta № 3

De Guia de Estudo do Programa Certificado Sun para Java 6:

Uma classe aninhada estática é simplesmente uma classe que é um membro estático da classe envolvente.... A classe em si não é realmente "estática"; não existe uma classe estática. o static O modificador neste caso diz que a classe aninhada é um membro estático da classe externa. Isso significa que ele pode ser acessado, como em outros membros estáticos, sem ter uma instância da classe externa.

A próxima pergunta óbvia é "O que faz static significar?"Tudo o que isso significa é que você recebe um por classe em vez de um por objeto. Em outras palavras, há uma versão que todos compartilham, sem vínculo com nenhuma instância específica, em vez de uma por instância da classe). Parece óbvio a essa altura, mas você deve usar uma classe estática nas situações em que deseja usar um membro estático e também uma classe. Às vezes, as classes estáticas também podem ser úteis como contêineres para métodos auxiliares pequenos , já que eles têm acesso a suas classes anexas "membros privados.

Aqui está um exemplo que eu lembro da escola:

public class Shapes {
List<Shape> shapes;

private static class ShapeSorter implements Comparator {
...
}

...

Observe que você não pode ter uma classe estática de nível superior; não há classe anexa para a qual seja membro. Você também não pode ter uma classe estática declarada dentro de um método, devido a problemas de escopo.

tem centenas de outras perguntas sobre Stack Overflow sozinho sobre o que estática significa em Java. Aqui estão alguns para você começar: