Maison >Java >JavaBase >Comment initialiser des objets en Java

Comment initialiser des objets en Java

王林
王林original
2019-11-20 16:33:554476parcourir

Comment initialiser des objets en Java

Première étape : charger la classe. Un objet Java sera chargé en classe avant l'initialisation et un objet Class sera généré dans la JVM. Le chargement d'une classe effectuera les opérations suivantes, et la description récursive est donnée ci-dessous.

Si la classe a une classe parent, sa classe parent est chargée en premier.

i Initialiser les membres statiques de cette classe

ii Exécuter le bloc de code statique de cette classe

Étape 2 : Créer un objet. Si la classe a une classe parent, lors de la création de l'objet, l'objet de sa classe parent sera créé en premier, les propriétés et méthodes de la sous-classe seront enveloppées dans la couche externe, puis la référence. de la sous-classe sera renvoyée. La description récursive est donnée ci-dessous.

Si la classe a une classe parent, créez d'abord l'objet de la classe parent.

i Initialiser les membres ordinaires de cette classe

ii Exécuter un bloc de code ordinaire

iii Appeler cette méthode de construction de classe

Exemple :

L'objet de classe est utilisé comme variable membre

public class Info{    public Info(String s) {
        System.out.println(s);
    }
}

Classe parent

public class Parent {
    public static Info info = new Info("Parent static member");      //静态成员
    public Info info2 = new Info("Parent common member");            //普通成员
    static {                                                         //静态代码块
        System.out.println("parent static block");
    }
    {                                                                //普通代码块
        System.out.println("parent common block");
    }
    public Parent() {                                                //父类构造方法
        System.out.println("Parent.Parent()");
    }
}

Sous-classe

public class Child extends Parent{
    public static Info info = new Info("Child static member");       //静态成员
    public Info info2 = new Info("Child common member");             //普通成员
    static {                                                         //静态代码块
        System.out.println("Child static block");
    }
    {                                                                //普通代码块
        System.out.println("Child  common block");
    }
    public Child() {                                                 //子类构造方法
        System.out.println("Child.Child()");
    }
}

Le processus de chargement de la classe de test suivant, nous ne créons pas d'objets, mais chargeons directement la classe et chargeons la sous-classe

public class InitObjectTest{
    public static void main(String[] args) {
        try{
            //Class.forName("Parent");
            Class.forName("Child");
        }catch(Exception e){
            
        }
        //System.out.println("=============== now , we create an Object below ===========");
        //new Parent();
    }
}

Résultats des tests :

Comment initialiser des objets en Java

Les résultats des tests sont conformes aux règles de chargement des classes écrites ci-dessus. Initialisez d'abord les membres statiques de la classe parent, puis exécutez le bloc statique de la classe parent, puis initialisez les membres statiques de la sous-classe. et enfin exécutez le bloc statique de la sous-classe. On voit que les membres statiques sont bien initialisés lorsque la classe est chargée.

Remarque : Le chargement de la classe ne se fait qu'une seule fois. Après cela, la classe ne sera plus chargée lors de la création de l'objet. C'est pourquoi le bloc de code statique n'est exécuté qu'une seule fois. .

Tutoriel recommandé : Tutoriel d'introduction à 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!

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