Classe anonyme Java

Qu'est-ce qu'une classe anonyme?

Une classe dans laquelle la définition et l'instanciation de classe sont décrites dans une seule expression sans spécifier le nom de la classe. Vous pouvez implémenter l'interface, récupérer la méthode, hériter de la classe, remplacer la méthode et récupérer la méthode sans spécifier le nom de la classe, ce qui est pratique lorsque vous souhaitez utiliser la méthode uniquement sur place.

interface Inter{
	void methodA();
}

class SuperT{
	void methodS() {
		System.out.println("Super");
	}
}

class OuterT{ //Classe extérieure
	void method1() {
		new Inter() { //Implémenter et instancier l'interface en même temps
			public void methodA() {
				System.out.println("méthode Une mise en œuvre");
			}
		}.methodA(); //Appeler methodA depuis celui instancié
	}

	/*void method2() {
		new SuperT() {
			void methodS() {
				System.out.println("Override");
			}
		}.methodS();
	}*/

}

public class Tokumei {

	public static void main(String[] args) {
		OuterT ot = new OuterT();
		ot.method1();
		//ot.method2();
		
		System.out.println("-----Lorsqu'il est appelé après l'affectation à une variable de type SuperT-----");
		SuperT st = new SuperT() { //Affecter à une variable de type superclasse
			void methodS() {
				System.out.println("Override");
			}
			void methodSub() { //Méthode propriétaire de sous-classe anonyme
				System.out.println("Sub");
			}
		};

		st.methodS();
		//st.methodSub(); //Vous ne pouvez pas appeler des méthodes uniques aux sous-classes anonymes avec des variables de type superclasse
		
		System.out.println("-----Lorsqu'il est appelé directement depuis un objet-----");
		new SuperT() {
			void methodS() {
				System.out.println("Override");
			}
			void methodSub() {
				System.out.println("Sub");
			}
		}.methodSub(); //Peut être appelé directement
		}
}

Résultat de sortie

méthode Une mise en œuvre
-----Lorsqu'il est appelé après l'affectation à une variable de type SuperT-----
Override
-----Lorsqu'il est appelé directement depuis un objet-----
Sub

point

(1) Lors de l'héritage d'une classe, les sous-classes anonymes peuvent remplacer la méthode.

(2) Lorsqu'une sous-classe anonyme qui hérite d'une superclasse est affectée à une variable de type superclasse puis appelée, seules les méthodes (y compris les méthodes remplacées) de la superclasse peuvent être appelées. (Le mécanisme est le même que pour les superclasses et sous-classes normales, et la plage accessible change en fonction du type de variable.)

(3) Lors d'un appel direct depuis un objet, la méthode initialement définie dans la sous-classe anonyme peut également être appelée.

Recommended Posts

Classe anonyme Java
Classe anonyme (classe anonyme)
Méthodes de classe Java
[Java] Héritage de classe
classe Scanner java
Classe Java HashMap
java (classe abstraite)
[Java] Classe imbriquée
À propos de la classe Java
[java] Classe abstraite
[Java] Classe d'objets
Classe locale Java
À propos de la division de classe (Java)
À propos de la classe Java StringBuilder
[Java] À propos de la classe Singleton
[Java] À propos des classes anonymes
Examen de la classe interne Java
Champ de type de classe Java
Programmation Java (méthode de classe)
À propos de la classe Java String
Programmation Java (structure de classe)
À propos de la classe abstraite de Java
Exemple simple de rappel dans l'exemple de classe anonyme Java Part2
[Java] Référence de classe de wrapper Integer
Sous-chaîne de mémo Java (classe standard)
Sous-chaîne de classe Java inflexible String
[Implémentation] Notes de classe de processus java
À propos des types de chargeur de classe Java
Comment utiliser la classe Java
[Java] Comparateur de la classe Collection
Java
Mémo d'apprentissage Java (classe abstraite)
Résumé de la classe Java Math
[Java] Qu'est-ce que l'héritage de classe?
Méthode de classe variable de classe Java
Java
[Notions de base Java] Qu'est-ce que la classe?
Implémentez Thread en Java et essayez d'utiliser la classe anonyme Lambda
Créer une classe immuable avec JAVA
Pourquoi les variables de classe sont-elles nécessaires? [Java]
Appeler la classe scellée de Kotlin depuis Java
Diverses méthodes de la classe Java String
[Java] Mémo pour nommer les noms de classe
Comment désassembler un fichier de classe Java
Classe Kotlin à envoyer aux développeurs Java
Classe StringBuffer et StringBuilder en Java
Comment décompiler un fichier de classe Java
java (utilisez le type de classe pour le champ)
Code source Java lecture de la classe java.lang.Math
[Java] Classe de modèle de bouton par Graphics
Comment utiliser les méthodes de classe [Java]
[Java] Comment utiliser la classe Math
Apprendre Java (0)
Étudier Java ―― 3
[Java] tableau
Qu'est-ce qu'une classe en langage Java (3 /?)
Java protégé
[Java] Annotation
Tableau Java
Kotlin's Class part.2 à envoyer aux développeurs Java