Introducción a las clases internas
Una clase definida en otra clase se llama clase interna
Clase interna del miembro
1..neo Para crear una clase interna de un miembro, primero debe crear una instancia de la clase externa y luego crear un objeto de la clase interna a través de .Neo
2 ... Esto puede acceder a todas las propiedades y métodos de clases externas a través del nombre de la clase. Esto de la clase externa.
public class test1 {String name = "asnd"; public static void main (string [] args) {test1 test1 = new test1 (); Inner Minner = test1.new inner (); minner.print (); } void show () {system.out.println ("show"); } public class Inner {String name = "123"; Private void print () {show (); System.out.println (name); // imprime 123 System.out.println (test1.this.name); // imprime asnd}}}Clase interna anónima
Una clase sin nombre también creará un objeto mientras crea una clase.
Solo necesita usar la clase una vez para usar clases internas anónimas
Archivo archivo = nuevo archivo ("d: /cc.txt") {@Override public boolean delete () {System.out.println ("No elimine Y/N"); Entrada del escáner = nuevo escáner (System.in); Cadena str = input.next (); if (str.equals ("y")) {return super.delete (); } System.out.println ("Eliminar fallido"); devolver falso; }}; file.delete (); }Objeto anónimo
El objeto solo debe acceder una vez.
new Thread () {@Override public void run () {System.out.println ("¡Inicio de hilo!"); intente {Thread.sleep (2000); System.out.println ("¡End de hilo!"); } catch (Exception e) {E.PrintStackTrace (); } super.run (); } }.comenzar();Clase interior estática
1. Las clases internos estáticas solo pueden acceder a métodos estáticos y variables de clases externas, y no pueden acceder a no estatales.
2. Las clases internos estáticas se pueden crear directamente sin crear referencias a clases externas.
Variables locales de acceso interno anónimo
El acceso interno de clase las variables locales deben ser finales. Si no se agrega, JDK1.8 se agregará de forma predeterminada. Cuando se cambia la variable utilizada, se puede usar el siguiente método, o lo siguiente, se puede configurar como estático al principio.
para (int i = 0; i <5; i ++) {final int finali = i; new Thread () {public void run () {System.out.println (finali); }; }.comenzar(); }La siguiente es una introducción a las habilidades de implementación de las clases internas
public static void main (string [] args) {lam mlam = new Lam (); // El primer método de implementación mlam.to (new Light () {@Override public void shin () {System.out.println ("El primer método de ON");}}); // El segundo método de clase de implementación mylam implementa luz {@Override public void shin () {System.out.println ("segundo"); }} mlam.to (nuevo mylam ()); }} luz de interfaz {void shin ();} class Lam {public void to (ligh ligh) {ligh.shin (); System.out.println ("On"); }}Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!