Java中类初始化代码块和父类构造器执行顺序问题,
阿神
阿神 2017-04-18 10:10:52
0
2
377
阿神
阿神

闭关修行中......

répondre à tous(2)
洪涛

J'ai cherché pendant longtemps mais je n'ai pas trouvé le temps d'exécution du bloc. Plus tard, j'ai utilisé javap -c pour vérifier le fichier de classe et j'ai découvert que le bloc avait été lancé dans le constructeur et que la méthode <init> La superclasse invocationspecial y était également, mais devant le bloc. Cela explique votre problème.

小葫芦

Tout d'abord, après avoir utilisé la commande javac pour compiler une classe Java, le bloc de code d'initialisation de la classe Java disparaîtra - le code dans le bloc de code d'initialisation sera "restauré" à chaque constructeur et sera situé devant de tout le code du constructeur.

Processus de base :

1.为要创建的对象分配内存空间,其大小取决于Java类及其父类和祖先类包含的所有实例域的数量和类型
2.如果内存分配成功(失败会抛出OutOfMemoryError错误),把新创建的对象的所有实例域(包括父类的)都设为默认值
3.调用构造方法
    ①调用父类的构造方法,如果没有显式使用super关键字进行调用,则由编译器自动生成相关的代码
    ②按照类中实例域的顺序初始化实例域的值
    ③执行类的构造方法中的其他代码完成最终的初始化工作

Vous pouvez l'analyser vous-même.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!