Comprendre l'ordre d'initialisation dans les constructeurs Java
Lors de la construction d'un objet en Java, il est crucial de comprendre l'ordre d'initialisation. Cette question se pose : "Quelqu'un peut-il clarifier le résultat du programme suivant ?"
Le code :
class X { Y b = new Y(); X() { System.out.print("X"); } } class Y { Y() { System.out.print("Y"); } } public class Z extends X { Y y = new Y(); Z() { System.out.print("Z"); } public static void main(String[] args) { new Z(); } }
Le résultat attendu était "XZYY" en supposant que les constructeurs sont initialisés avant l'instance variables. Cependant, le résultat est en réalité « YYXZ ». Cet écart souligne l'importance de comprendre l'ordre d'initialisation réel.
Selon la spécification de la machine virtuelle Java, l'ordre d'initialisation est le suivant :
- Initialiseurs de variables statiques et blocs d'initialisation statiques, dans l'ordre textuel.
- L'appel super() dans le constructeur, qu'il soit explicite ou implicite.
- Variable d'instance initialiseurs et blocs d'initialisation d'instance, dans l'ordre textuel.
- Corps restant du constructeur après super().
Dans ce cas, les variables et les blocs statiques ne sont pas impliqués. L'appel super() se produit implicitement dans le constructeur de la classe Z, il n'est donc pas visible dans le code. Par conséquent, l'ordre d'initialisation est :
- Initialiseurs de variables d'instance de classe X (b)
- Initialiseurs de variables d'instance de classe Y (y)
- Corps constructeur de classe X (imprime "X")
- Corps constructeur de classe Z (imprime "Z")
Cela explique la sortie "YYXZ."
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)