La clase interna en la clase interna anónima de JAVA

La clase interna anónima también es una clase interna sin nombre (se utiliza principalmente para centrarse en la implementación en lugar del nombre de la clase de implementación). Como no hay nombre, la clase interna anónima solo se puede usar una vez. Por lo general, se usa para simplifica la escritura de código y generalmente funciona con interfaces.

Pero hay otro requisito previo para usar clases internas anónimas: debe heredar una clase principal o implementar una interfaz .
    Cuando se crea una clase interna anónima, se creará una instancia de esta clase inmediatamente, la definición de clase desaparece inmediatamente y la clase interna anónima no se puede reutilizar.
    El formato para definir clases internas anónimas es el siguiente:
new 父类名(参数列表)|实现接口名()  
{  
 //匿名内部类的类体部分  
};
La forma más común de crear una clase interna anónima es crear un objeto de cierto tipo de interfaz, como se muestra en el siguiente programa:
interface Animal {
    public void eat();
}
 
public class Demo {
    public static void main(String[] args) {
    	//实现方式1
    	Animal Dog = new Animal() {
            public void eat() {
                System.out.println("Dog eat something");
            }
        };
        Dog.eat();
        
    //实现方式2
        new Animal(){
        	public void eat(){
        		System.out.println("Dog eat something");
        	}
        }.eat();
    
    }
}
Como puede ver, implementamos directamente los métodos en la clase abstracta Person entre llaves, para que podamos omitir la escritura de una clase.
Como se puede ver en el ejemplo anterior, siempre que una clase sea abstracta o una interfaz, los métodos en sus subclases se pueden implementar usando clases internas anónimas

Además, existe una situación común en la realización de multi-threading, porque para lograr multi-threading se debe heredar la clase Thread o heredar la interfaz Runnable.

Ejemplo 1
//Thread类的匿名内部类实现
public class Demo {
    public static void main(String[] args) {
        Thread t = new Thread() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        t.start();
    }
}

Ejemplo 2
//Runnable接口的匿名内部类实现
public class Demo {
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        Thread t = new Thread(r);
        t.start();
    }
}

Resultado de la operación: 1 2 3 4 5



Supongo que te gusta

Origin blog.csdn.net/liushulin183/article/details/46700465
Recomendado
Clasificación