Maison  >  Article  >  Java  >  Lors de la création d'un objet de classe dérivée, quel est l'ordre dans lequel les constructeurs sont exécutés ?

Lors de la création d'un objet de classe dérivée, quel est l'ordre dans lequel les constructeurs sont exécutés ?

王林
王林original
2020-07-08 15:55:219657parcourir

Lors de la création d'un objet de classe dérivée, l'ordre d'exécution du constructeur est : le constructeur de la classe de base, le constructeur membre de l'objet de la classe dérivée et le constructeur de la classe dérivée elle-même. Lorsqu'un objet est créé, l'ordre de chargement du code est le suivant : code statique, code non statique et méthodes de constructeur.

Lors de la création d'un objet de classe dérivée, quel est l'ordre dans lequel les constructeurs sont exécutés ?

Lors de la création d'un objet de classe dérivée, l'ordre d'exécution des constructeurs est : le constructeur de la classe de base, le constructeur membre de l'objet de la classe dérivée et le constructeur de la classe dérivée lui-même.

(Tutoriel recommandé : Programme d'introduction à Java )

Introduction détaillée :

L'ordre de chargement du code lors de la création de l'objet est : code statique ---> Code non statique -->

Si la classe parent est héritée, l'ordre de chargement est : le code statique de la classe parent --> le code statique de la sous-classe --> > le Constructeur de la classe parent --> Code non statique de la sous-classe -->

Parmi eux, le code statique comprend (méthodes statiques, variables statiques, blocs de code statiques, etc.), le code non statique est (méthodes membres, variables membres, blocs de code membre, etc.). de code, écrit au-dessus du chargement.

(Tutoriel vidéo recommandé : Tutoriel vidéo Java )

Exemple :

public class ExtendsTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		C c = new D();
	}

}

class C {
	static {
		System.out.println("C 基类静态域 ");
	}
	{
		System.out.println("C 基类对象成员构造函数");
	}

	public C() {
		System.out.println("C 基类本身的构造函数");
	}
}

class D extends C {
	static {
		System.out.println("D 派生类静态域");
	}
	{
		System.out.println("D 派生类对象成员构造函数");
	}

	public D() {
		System.out.println("D 派生类本身的构造函数");
	}
}

Résultat de sortie :

Lors de la création dun objet de classe dérivée, quel est lordre dans lequel les constructeurs sont exécutés ?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn