Java permite definir una clase dentro de otra clase. estos se llaman Clases anidadas . Las clases pueden ser estáticas, algo que la mayoría de los desarrolladores conocen; de ahora en adelante, algunas clases pueden volverse estáticas en Java. Soportes de Java Variables de instancia estáticas , Métodos estáticos , Bloque estático y clases estáticas. La clase en la que se define la clase anidada se conoce como Clase exterior . A diferencia de las clases de alto nivel, Las clases anidadas pueden ser estáticas . Las clases anidadas no estáticas también se conocen como clases internas .
Nota: La clase de nivel superior no puede ser estática en Java, para crear una clase estática debemos crear una clase anidada y luego hacerla estática.
No se puede crear una instancia de una clase interna sin una instancia de la clase externa. Por lo tanto, una instancia de clase interna puede acceder a todos los miembros de su clase externa, sin utilizar una referencia a la instancia de clase externa. Por esta razón, las clases internas pueden ayudar a que los programas sean simples y concisos.
Recordar: En una clase estática, podemos crear objetos fácilmente.
bash para el bucle 1 al 10
Diferencias entre clases anidadas estáticas y no estáticas
Las siguientes son las principales diferencias entre las clases anidadas estáticas y las clases internas.
- Se puede crear una instancia de una clase anidada estática sin crear una instancia de su clase externa.
- Las clases internas pueden acceder a miembros tanto estáticos como no estáticos de la clase externa. Una clase estática sólo puede acceder a los miembros estáticos de la clase externa.
Ejemplo de Clases anidadas estáticas y no estáticas
A continuación se muestra la implementación del tema mencionado anteriormente:
lista de matrices ordenada
Java
formatear una fecha en java
// Java program to Demonstrate How to> // Implement Static and Non-static Classes> // Class 1> // Helper class> class> OuterClass {> > // Input string> > private> static> String msg => 'GeeksForGeeks'> ;> > // Static nested class> > public> static> class> NestedStaticClass {> > // Only static members of Outer class> > // is directly accessible in nested> > // static class> > public> void> printMessage()> > {> > // Try making 'message' a non-static> > // variable, there will be compiler error> > System.out.println(> > 'Message from nested static class: '> + msg);> > }> > }> > // Non-static nested class -> > // also called Inner class> > public> class> InnerClass {> > // Both static and non-static members> > // of Outer class are accessible in> > // this Inner class> > public> void> display()> > {> > // Print statement whenever this method is> > // called> > System.out.println(> > 'Message from non-static nested class: '> > + msg);> > }> > }> }> // Class 2> // Main class> class> GFG {> > // Main driver method> > public> static> void> main(String args[])> > {> > // Creating instance of nested Static class> > // inside main() method> > OuterClass.NestedStaticClass printer> > => new> OuterClass.NestedStaticClass();> > // Calling non-static method of nested> > // static class> > printer.printMessage();> > // Note: In order to create instance of Inner class> > // we need an Outer class instance> > // Creating Outer class instance for creating> > // non-static nested class> > OuterClass outer => new> OuterClass();> > OuterClass.InnerClass inner> > = outer.> new> InnerClass();> > // Calling non-static method of Inner class> > inner.display();> > // We can also combine above steps in one> > // step to create instance of Inner class> > OuterClass.InnerClass innerObject> > => new> OuterClass().> new> InnerClass();> > // Similarly calling inner class defined method> > innerObject.display();> > }> }> |
>
número aleatorio en java
>Producción
Message from nested static class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks>