En circunstancias normales, no se pueden usar clases de modificación estática. Si tiene que usar Static para modificar la clase, Static generalmente modifica la clase interna anónima.
Cree otra clase en una clase, llamada Clase Interior de Miembro. Esta clase interna miembro puede ser estática (utilizando modificación de palabras clave estáticas) o no estática. Porque las clases internas estáticas tienen varias restricciones al definirlas y usarlas. Entonces no se usa mucho en el trabajo real.
Durante el proceso de desarrollo, las clases internas más comunes se utilizan en clases internas que son miembros no estatales. Sin embargo, en casos específicos, las clases internas estáticas también pueden desempeñar su papel único.
1. Propósito del uso de clases internas estáticas.
Al definir una clase interna, puede prefijarlo con un modificador de permiso estático. En este momento, esta clase interior se convierte en una clase interna estática. Sin embargo, debido a varias razones, como las restricciones de uso y otros factores (las restricciones de uso específicas se explican en detalle en el siguiente contenido), no se usan muchos en el trabajo real. Pero eso no significa que no tenga valor. En algunos casos especiales, realmente no es posible carecer de esta clase interna estática. Por ejemplo, al realizar pruebas del programa de código, si se establece un método principal en cada archivo fuente de Java (el método principal es la entrada a una determinada aplicación y debe tenerla), entonces aparecerá mucho código adicional. Y lo más importante es que el código de este programa principal es solo un formulario para archivos Java, y no requiere este método principal en sí. Pero es absolutamente imposible hacerlo sin este método principal. En este caso, el método principal se puede escribir en la clase interna estática, por lo que no es necesario establecer un método principal similar para cada archivo de origen Java. Esto es muy útil para las pruebas de código. En algún desarrollo de aplicaciones medianas y grandes, es un medio técnico comúnmente utilizado. Por esta razón, aunque esta clase interna estática no se usa muy comúnmente, los desarrolladores de programas también deben dominarla. Quizás en algún momento crítico, todavía puede jugar un papel muy importante.
public class MainInStaticClass {static class Main{static void main() {//Write the main method to a static inner class, so there is no need to have this kind of main method for each source file new MainInStaticClass().print();}}public static void main(String[] args){new MainInStaticClass().print();}public void print () {System.out.println ("Main in Static Inner Class");}} public class testMain {public static void main (string [] args) {// toDo método auto-generado stub // new mainstaticClass (). imprime (); maininstaticClass.Main.main (); new MainInstaticClass..main ();};};};};};};};};};}2. Limitaciones en el uso de clases internas estáticas.
Definir una clase interna como clase estática es básicamente lo mismo que definir otras clases como clases estáticas, y las reglas de referencia son básicamente las mismas. Sin embargo, los detalles siguen siendo muy diferentes. Específicamente, existen principalmente las siguientes áreas para atraer la atención de todos los desarrolladores de programas.
Una es la definición de miembros estáticos (incluidas las variables estáticas y los miembros estáticos). En términos generales, si una clase interna no se define como una clase interna estática, entonces no se puede definir como una variable de miembro estático y un método de miembro estático al definir variables de miembros o métodos de miembros. Es decir, los miembros estáticos no pueden ser declarados en clases internas no estáticas. Por ejemplo, una edad de clase interna ahora se define en una clase de estudiante. Si esta clase no se modifica con la palabra clave estática, es decir, no se define como una clase estática, entonces no se le permite modificar un cierto método miembro o variable miembro en esta clase interna. No podrá pasar al compilar. Por lo tanto, los desarrolladores de programas deben tener en cuenta que solo modificando una clase interna como clase estática puede definirse variables de miembros estáticos y los métodos miembros en esta clase. Esta es una característica que tienen las clases internas estáticas. Es precisamente por esta razón que a veces muchas tareas no se pueden completar sin esta clase interna estática. O es necesario recorrer un gran círculo para lograr las necesidades de un determinado usuario. Esta es también una razón importante por la cual existen internales estáticas.
En segundo lugar, hay restricciones relativamente grandes en las citas de los miembros. Las clases internas no estáticas generales pueden acceder a variables de miembros y métodos miembros en clases externas a voluntad. Incluso si estos métodos miembros se modifican como privados (variables o métodos de miembros privados), se puede acceder a sus clases internas no estáticas a voluntad. Es un privilegio de clases internas no estáticas. Porque en otras clases, las variables o métodos de miembros definidos como privados son inaccesibles. Sin embargo, si una clase interna se define como estática, habrá muchas restricciones al usar métodos miembros o variables de miembros de la clase externa. Por ejemplo, no se puede acceder a los miembros no estáticos de clases externas (incluidas las variables de los miembros y los métodos de miembros) desde los objetos de la clase interna estática. ¿Qué quiere decir esto? Si se definen dos variables en la clase externa, una es una variable no estática y la otra es una variable estática. Luego, en una clase interna estática, ya sea dentro de un método de miembro o en otro lugar, solo puede hacer referencia a variables estáticas en la clase externa y no puede acceder a variables no estáticas. En las clases internas estáticas, se pueden definir métodos estáticos (y solo se pueden definir métodos estáticos en clases internas estáticas), y los miembros de la clase externa pueden referenciar en métodos estáticos. Sin embargo, no importa a dónde se haga referencia a la clase interna, hay una cosa en común, es decir, solo puede hacer referencia a métodos de miembros estáticos o variables de miembros en la clase externa. Para las variables de miembros no estáticos y los métodos miembros, son inaccesibles en las clases internas estáticas. Este es el límite de uso máximo para las clases internos estáticas. No existe tal restricción en las clases internas no estricas ordinarias. Es precisamente esta razón por la que las clases internas estáticas solo se usan en algunas ocasiones específicas. Su rango de aplicación es mucho menos extenso que el de las clases internas no estáticas.
Tercero, al crear una clase interna estática, no hay necesidad de unir instancias de la clase interna estática a instancias de la clase externa.
En términos generales, al crear una clase interna miembro en una clase, hay una disposición obligatoria, es decir, las instancias de clase interna deben estar vinculadas a instancias de clase externa. Es decir, antes de crear una clase interna, primero debe usar la nueva palabra clave en la clase exterior para crear un objeto de esta clase interna. En este caso, si un objeto de clase interna se inicializa desde la clase externa, el objeto de clase interna se unirá al objeto de clase exterior. En otras palabras, los objetos de las clases internas no estáticas ordinarias están conectados a objetos externas. Sin embargo, si los desarrolladores miembros crean clases internas estáticas, ese es otro asunto. En términos generales, cuando un programador define una clase interna estática, no necesita definir instancias de la clase externa. Es decir, para definir una clase interna estática en una clase externa, no es necesario usar la palabra clave nueva para crear una instancia de la clase interna. Es decir, al crear un objeto interno de una clase estática, no son necesarios objetos de su clase externa.
newMainInStaticClass.Main();
Por la razón específica, generalmente los desarrolladores de programas no necesitan entender tan profundamente que solo necesitan recordar que existe esta regla. Al definir clases internas estáticas, nunca cometa el error de agregar dinero extra.
Del análisis anterior, podemos ver que las clases internas estáticas siguen siendo muy diferentes de las clases internas no estáticas. En general, los desarrolladores de programas pueden comprender que los objetos de clase interna no estatales guardan implícitamente una referencia en la clase externa para apuntar al objeto de clase exterior que lo creó. Independientemente de este entendimiento, los desarrolladores de programas deben tener en cuenta las diferencias entre las clases internas estáticas y las clases internas no estáticas. Por ejemplo, se pueden crear si se pueden crear métodos de miembros estáticos y variables de miembros (las clases internos estáticas pueden crear miembros estáticos en lugar de clases internas estáticas), las restricciones para acceder a miembros de clases externas (las clases estáticas internas solo pueden acceder a las variables de los miembros estáticos y los miembros de los miembros de los miembros. Estas dos diferencias son la mayor diferencia entre las clases internas estáticas y las clases externas no estáticas, y también son la razón por la cual existen clases internas estáticas. Después de comprender esta diferencia, los desarrolladores de programas también deben saber en qué circunstancias deben usar clases internos estáticas. Por ejemplo, durante la prueba del programa, para evitar escribir el código del método principal en cada archivo fuente de Java, el método principal se puede escribir en una clase interna estática para reducir la cantidad de código escrito y hacer que el código sea más conciso.
En resumen, las clases internas estáticas son una clase muy especial en el lenguaje Java, que es muy diferente de las clases estáticas ordinarias y las clases internas no estáticas. Como desarrollador de programas, es necesario conocer las diferencias entre ellos y adoptar las clases correctas donde están en un trabajo real. Sin embargo, en general, la frecuencia de las clases internas estáticas no es muy alta. Sin embargo, en algunas ocasiones, si esta clase estática interna no está disponible, puede tener un efecto negativo de la mitad del resultado con el doble del esfuerzo.
3. Instanciación
Después de leer el contenido anterior, lo probé como un todo:
En primer lugar, todos deben entender que las clases internas estáticas simplemente no dependen de clases externas, y las variables y métodos dentro de ellas no son necesariamente estáticas. Hablemos del código a continuación:
Prueba de clase pública {public static void main (string [] args) {myinstaticClass inner = new myInnStaticClass (); inner.a = 10; inner.b = "abc"; system.out.println (inner.a+"" "+inner.b);} Clase estática myInnstaticClass {String B;}}}} Prueba de clase pública {public static void main (string [] args) {myinstaticClass inner = new myInnStaticClass (); inner.a = 10; inner.b = "abc"; system.out.println (inner.a+"" "+inner.b);} Clase estática myInnstaticClass {String B;}}}}El código anterior instancia a la clase anónima estática con nuevo, ingrese 10 ABC Después de ejecutar, ¡correcto!
Resumir
Lo anterior es toda la explicación detallada de la clase estática en Java en este artículo. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!