Em circunstâncias normais, as classes de modificação estática não podem ser usadas. Se você precisar usar estático para modificar a classe, a estática geralmente modifica a classe interna anônima.
Crie outra classe em uma classe, chamada de Classe Interior do Membro. Esta classe interna do membro pode ser estática (usando modificação de palavra-chave estática) ou não estática. Porque classes internas estáticas têm várias restrições ao definir e usá -las. Portanto, pouco é usado no trabalho real.
Durante o processo de desenvolvimento, as classes internas mais comuns são usadas em classes internas que não são membros não-estatais. No entanto, em casos específicos, as classes internas estáticas também podem desempenhar seu papel único.
1. Objetivo do uso de classes internas estáticas.
Ao definir uma classe interna, você pode prefixá -la com um modificador de permissão estático. Neste momento, essa classe interna se torna uma classe interna estática. No entanto, devido a várias razões, como restrições de uso e outros fatores (as restrições de uso específicas são explicadas em detalhes no conteúdo a seguir), não há muitos usados no trabalho real. Mas isso não significa que não tem valor. Em alguns casos especiais, não é realmente possível não ter essa classe interna estática. Por exemplo, ao realizar o teste do programa de código, se um método principal estiver definido em cada arquivo de origem Java (o método principal é a entrada para um determinado aplicativo e deve tê -lo), muito código extra será exibido. E o mais importante é que o código deste programa principal é apenas um formulário para arquivos Java e não requer esse próprio método principal. Mas é absolutamente impossível fazer sem esse método principal. Nesse caso, o método principal pode ser gravado na classe interna estática, para que não haja necessidade de definir um método principal semelhante para cada arquivo de origem Java. Isso é muito útil para testes de código. Em algum desenvolvimento de aplicações médias e grandes, é um meio técnico comumente usado. Por esse motivo, embora essa classe interna estática não seja muito usada, os desenvolvedores de programas também devem dominá -la. Talvez em algum momento crítico, ainda possa desempenhar um papel enorme.
classe pública MainInstaticClass {classe estática principal {estática void main () {// Escreva o método principal para uma classe interna estática, para que não seja necessário ter esse tipo de método principal para cada arquivo de origem novo MainstaticClassClass. print () {System.out.println ("Principal na classe interna estática");}} classe pública TestMain {public static void main (string [] args) {// TODO Auto-Gerated Method Stub // new MainInstaticClass (). Print (); MainStaticClass.Main ();2. Limitações no uso de classes internas estáticas.
Definir uma classe interna como uma classe estática é basicamente a mesma que definir outras classes como classes estáticas, e as regras de referência são basicamente as mesmas. No entanto, os detalhes ainda são muito diferentes. Especificamente, existem principalmente as seguintes áreas para atrair a atenção de todos os desenvolvedores do programa.
Uma é a definição de membros estáticos (incluindo variáveis estáticas e membros estáticos). De um modo geral, se uma classe interna não for definida como uma classe interna estática, ela não poderá ser definida como uma variável de membro estática e um método estático ao membro ao definir variáveis de membros ou métodos de membros. Ou seja, os membros estáticos não podem ser declarados em classes internas não estáticas. Por exemplo, uma idade de aula interna agora é definida em uma aula de estudante. Se esta classe não for modificada com a palavra -chave estática, ou seja, ela não será definida como uma classe estática, não poderá modificar um determinado método ou variável de membro nessa classe interna. Não será capaz de passar ao compilar. Portanto, os desenvolvedores de programas precisam observar que somente modificando uma classe interna como uma classe estática pode ser definida variáveis estáticas e métodos de membros nesta classe. Este é um recurso que as classes internas estáticas têm. É precisamente por esse motivo que, às vezes, muitas tarefas não podem ser concluídas sem essa classe interna estática. Ou é necessário dar um grande círculo para atingir as necessidades de um determinado usuário. Essa também é uma razão importante pela qual existem internos estáticos.
Segundo, existem restrições relativamente grandes nas citações de membros. Classes internas não estáticas gerais podem acessar variáveis de membros e métodos de membros em classes externas à vontade. Mesmo que esses métodos de membro sejam modificados como privados (variáveis ou métodos privados), suas classes internas não estáticas podem ser acessadas à vontade. É um privilégio de classes internas não estáticas. Porque em outras classes, variáveis ou métodos definidos como privados são inacessíveis. No entanto, se uma classe interna for definida como estática, haverá muitas restrições ao usar métodos de membro ou variáveis de membros da classe externa. Por exemplo, membros não estáticos de classes externas (incluindo variáveis de membros e métodos de membros) não podem ser acessados a partir de objetos da classe interna estática. O que isto significa? Se duas variáveis são definidas na classe externa, uma é uma variável não estática e a outra é uma variável estática. Então, em uma classe interna estática, seja dentro de um método de membro ou em outros lugares, ele só pode fazer referência a variáveis estáticas na classe externa e não pode acessar variáveis não estáticas. Nas classes internas estáticas, métodos estáticos podem ser definidos (e apenas métodos estáticos podem ser definidos em classes internas estáticas), e os membros da classe externa podem ser referenciados em métodos estáticos. No entanto, não importa onde a classe interna seja mencionada, há uma coisa em comum, ou seja, só pode referenciar métodos estáticos de membros ou variáveis de membros na classe externa. Para variáveis não estáticas de membros e métodos de membros, eles são inacessíveis em classes internas estáticas. Este é o limite máximo de uso para classes internas estáticas. Não existe essa restrição em classes internas não estáticas comuns. É precisamente essa razão que as classes internas estáticas são usadas apenas em algumas ocasiões específicas. Seu intervalo de aplicativos é muito menos extenso que o das classes internas não estáticas.
Terceiro, ao criar uma classe interna estática, não há necessidade de vincular instâncias da classe interna estática a instâncias da classe externa.
De um modo geral, ao criar uma classe interna de membro em uma classe, há uma provisão obrigatória, ou seja, instâncias de classe interna devem estar ligadas a instâncias de classe externa. Ou seja, antes de criar uma classe interna, você deve primeiro usar a nova palavra -chave na classe externa para criar um objeto dessa classe interna. Nesse caso, se um objeto de classe interna for inicializado a partir da classe externa, o objeto da classe interna estará ligado ao objeto de classe externa. Em outras palavras, os objetos de classes internas não estáticas comuns são anexadas a objetos externos. No entanto, se os desenvolvedores de membros criarem classes internas estáticas, isso é outra questão. De um modo geral, quando um programador define uma classe interna estática, ele não precisa definir instâncias da classe externa. Ou seja, para definir uma classe interna estática em uma classe externa, não há necessidade de usar a palavra -chave nova para criar uma instância da classe interna. Ou seja, ao criar um objeto interno de uma classe estática, não são necessários objetos de sua classe externa.
newMainInStaticClass.Main();
Por um motivo específico, geralmente os desenvolvedores do programa não precisam entender tão profundamente que eles só precisam lembrar que existe essa regra. Ao definir classes internas estáticas, nunca cometa o erro de adicionar dinheiro extra.
A partir da análise acima, podemos ver que as classes internas estáticas ainda são muito diferentes das classes internas não estáticas. Geralmente, os desenvolvedores do programa podem entender que objetos não estáticos de classe interna salvam implicitamente uma referência na classe externa para apontar para o objeto de classe externa que o criou. Independentemente desse entendimento, os desenvolvedores do programa precisam ter em mente as diferenças entre classes internas estáticas e classes internas não estáticas. Por exemplo, se os métodos estáticos de membros e as variáveis de membros podem ser criados (as classes internas estáticas podem criar membros estáticos em vez de classes internas estáticas não podem), restrições ao acesso a membros de classes externas (classes internas estáticas podem acessar apenas variáveis estáticas e métodos de membros externos em vez das classes estáticas e membros internos. Essas duas diferenças são a maior diferença entre classes internas estáticas e classes externas não estáticas e também são a razão pela qual existem classes internas estáticas. Depois de entender essa diferença, os desenvolvedores do programa também precisam saber em que circunstâncias devem usar classes internas estáticas. Por exemplo, durante o teste do programa, para evitar a gravação do código do método principal em cada arquivo de origem Java, o método principal pode ser gravado em uma classe interna estática para reduzir a quantidade de código escrita e tornar o código mais conciso.
Em suma, as classes internas estáticas são uma classe muito especial na língua Java, que é muito diferente das classes estáticas comuns e de classes internas não estáticas. Como desenvolvedor de programas, é necessário conhecer as diferenças entre eles e adotar as classes certas em que estão em trabalho real. No entanto, em geral, a frequência de classes internas estáticas não é muito alta. No entanto, em algumas ocasiões, se essa classe estática interna não estiver disponível, poderá ter um efeito negativo de metade do resultado com o dobro do esforço.
3. Instanciação
Depois de ler o conteúdo acima, eu o testei como um todo:
Primeiro de tudo, todos precisam entender que as classes internas estáticas simplesmente não dependem de classes externas, e as variáveis e métodos dentro deles não são necessariamente estáticos. Vamos falar sobre o código abaixo:
public class Test {public static void main (string [] args) {myInnerstaticclass interno = new MyInnerstaticClass (); interna.a = 10; interna.b = "abc"; system.out.println (interno.a+""+inner.b);} classe estática myinnnstorstcl {INTERNA {INTERNA; public class Test {public static void main (string [] args) {myInnerstaticclass interno = new MyInnerstaticClass (); interna.a = 10; interna.b = "abc"; system.out.println (interno.a+""+inner.b);} classe estática myinnnstorstcl {INTERNA {INTERNA;O código acima instancia a classe estática anônima com a nova, digite 10 ABC após a execução, correta!
Resumir
O exposto acima é toda a explicação detalhada da classe estática em Java neste artigo. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!