Maison >Java >javaDidacticiel >Pouvons-nous instancier une classe abstraite en Java ?
Pouvons-nous instancier une classe abstraite : une plongée plus approfondie
Dans la compréhension conventionnelle, les classes abstraites ne peuvent pas être instanciées. Mais une récente interview a fait apparaître une perspective différente. Examinons cette question intrigante avec un exemple pratique :
abstract class My { public void mymethod() { System.out.print("Abstract"); } } class Poly { public static void main(String a[]) { My m = new My() {}; m.mymethod(); } }
Contrairement aux notions traditionnelles, il est possible d'instancier une classe abstraite dans ce scénario. Cependant, il existe une différence subtile : au lieu d'instancier la classe abstraite elle-même, nous en créons une sous-classe anonyme.
Comprendre les sous-classes anonymes
Une sous-classe anonyme est une classe interne sans nom qui étend ou implémente une superclasse ou une interface spécifiée. Dans le code ci-dessus :
Validation par compilation
Pour vérifier ce comportement, pensez à compiler le code. Dans la sortie compilée, nous remarquerons :
La présence de Poly$1.class confirme l'instanciation d'une sous-classe anonyme, et non la classe abstraite elle-même.
Prise en charge de la spécification du langage Java
La spécification du langage Java (JLS) mentionne explicitement les sous-classes anonymes dans la section 15.9.1 : « La classe étant instanciée est la sous-classe anonyme. méthodes et champs. Cette nuance est un outil précieux pour comprendre et utiliser les concepts orientés objet de Java.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!