cari

Rumah  >  Soal Jawab  >  teks badan

Java中类初始化代码块和父类构造器执行顺序问题,

阿神阿神2766 hari yang lalu391

membalas semua(2)saya akan balas

  • PHP中文网

    PHP中文网2017-04-18 10:12:52

    Saya mencari untuk masa yang lama tetapi tidak dapat mencari masa pelaksanaan blok Kemudian saya menggunakan javap -c untuk menyemak fail kelas dan mendapati bahawa blok telah dibuang ke dalam pembina, dan kaedah <init> invokespecial superclass juga ada di dalamnya, tetapi di hadapan blok Ini menerangkan masalah anda.

    balas
    0
  • 高洛峰

    高洛峰2017-04-18 10:12:52

    Pertama sekali, selepas menggunakan arahan javac untuk menyusun kelas java, blok kod permulaan kelas java akan hilang - kod dalam blok kod permulaan akan "dipulihkan" kepada setiap pembina dan diletakkan di hadapan semua kod dalam pembina.

    Proses asas:

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

    Anda boleh menganalisisnya sendiri.

    balas
    0
  • Batalbalas