1. Clases anidadas estáticas
La clase anidada estática es una clase interna declarada como estática, se puede instanciar independientemente de las instancias de clase externas. Y la clase interna habitual necesita ser instanciada después de la instancia de la clase externa
(1) La clase anidada estática no es un miembro real de su clase externa, es el mismo nivel que la clase externa
(2) Las clases anidadas estáticas no pueden hacer referencia directa a variables de instancia o métodos en sus clases externas
(3) Método de creación de instancia:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass ();
(4) Ejemplos
public class StaticInnerClass { public static class InnerClass { private String string = "早上 好" ; public void say () { System.out.println (string); } } public void say () { System.out.println ( "你好" ); } public static void main (String [] args) { InnerClass InnerClass = new StaticInnerClass.InnerClass (); InnerClass.say (); StaticInnerClass staticInnerClass =nuevo StaticInnerClass (); staticInnerClass.say (); } }
2. Clase interna (clase interna miembro)
Crea la clase interna de plantas, la clase externa es biología
class Biology { public int age; public String name; public class Plants { public String color; public Plants ( int a, String n, String c) { age = a; // Variable miembro de la clase externa name = n; color = c ; // Variables miembro de clases internas } public void display () { System.out.println ( "El nombre de la planta es:" + nombre + "\ n" + "El color es:" + color); } } }
Prueba:
Prueba de clase pública { public static void main (String [] args) { Biology.Plants plants = new Biology (). new Plants (1, "Dandelion", "Yellow"); // Acceso a clases internas plants.display () ;}}
Se puede ver que la instanciación de la clase interna depende de la instanciación de la instancia de clase externa