Resumen de las cuatro clases internas en Java

En el lenguaje Java, una clase se puede definir dentro de otra clase, la clase dentro de la clase se denomina clase interna y la clase externa se denomina clase externa. En este caso, la clase interna puede verse como un miembro de la clase externa (similar a las propiedades y métodos de clase). También hay una clase denominada clase de nivel superior, que se refiere a una clase cuyo código de definición de clase no está anidado dentro de otras definiciones de clase.
Hay muchos tipos de clases internas, incluidas las cuatro siguientes: clase interna estática, clase interna miembro, clase interna local y clase interna anónima. Se definen de la siguiente manera:

class outerClass
{
    
        static class innerClass{
    
    }  //静态内部类}

class outerClass
{
    
        class innerClass{
    
    }  //成员内部类(普通内部类)}

class outerClass
{
    
        public void menberFunction()    {
    
            
	class innerClass{
    
    }   //局部内部类   
	}
}

public class MyFrame extends Frame
{
    
      //外部类  public MyFrame()  
	{
    
            addWindowListener(new WindowAdapter()        
		{
    
      //匿名内部类            
			public void windowClosing(WindowEvent e){
    
    
			    dispose();
			    System.exit(0);
			    }        
			  });
	  }
}

Una clase interna estática se refiere a una clase interna declarada como estática, que se puede instanciar sin depender de una instancia de la clase externa, mientras que la clase interna habitual debe instanciarse después de que se instancia la clase externa. Una clase interna estática no puede tener el mismo nombre que la clase externa, no puede acceder a las variables miembro ordinarias de la clase externa, pero solo puede acceder a miembros estáticos y métodos estáticos (incluidos los tipos privados) en la clase externa.

Una clase interna estática, si se elimina la palabra clave estática, se convierte en una clase interna miembro.

Una clase interna miembro es una clase interna no estática, que puede referirse libremente a las propiedades y métodos de la clase externa, ya sea que estas propiedades y métodos sean estáticos o no estáticos. Pero está vinculado a una instancia y no puede definir propiedades y métodos estáticos. Esta clase interna solo se puede instanciar después de que se instancia la clase externa. Es importante tener en cuenta que las clases internas no estáticas no pueden tener miembros estáticos.

La clase interna local se refiere a una clase definida en un bloque de código, su alcance es el bloque de código donde se encuentra y es el tipo de clase interna menos utilizado. Las clases internas locales, como las variables locales, no pueden ser modificadas por public, protected, private y static. Para una clase interna estática, elimine la palabra clave "estática" en su declaración y mueva su definición al método estático o al segmento de código de inicialización estática de su clase externa para convertirse en una clase interna estática local. Para una clase miembro, mover su definición al método de instancia o código de inicialización de instancia de su clase externa se convierte en una clase interna local.

Las clases internas estáticas locales tienen las mismas características básicas que las clases internas estáticas. Las clases internas locales tienen las mismas características básicas que las clases internas.

Una clase interna anónima es una clase interna sin nombre de clase, no usa la clase de palabras clave, se extiende, implementa, no tiene constructor y debe heredar (extender) otras clases o implementar otras interfaces.

El beneficio general de las clases internas anónimas es que el código es más conciso y compacto, pero el problema es que se reduce la legibilidad. Generalmente se usa en la programación de GUI (interfaz gráfica de usuario, interfaz gráfica de usuario) para implementar el procesamiento de eventos, etc. Hay algunos principios a tener en cuenta al usar clases internas anónimas:

1) Una clase interna anónima no puede tener un constructor.
2) Las clases internas anónimas no pueden definir miembros, métodos y clases estáticos.
3) Una clase interna anónima no puede ser pública, protegida, privada o estática.
4) Solo se puede crear una instancia de una clase interna anónima.
5) Una clase interna anónima debe estar detrás de new, y la clase anónima debe heredar una clase principal o implementar una interfaz.
6) Debido a que la clase interna anónima es una clase interna local, todas las restricciones de la clase interna local tienen efecto sobre ella.

Supongo que te gusta

Origin blog.csdn.net/david2000999/article/details/121451518
Recomendado
Clasificación