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

闭关修行中......

membalas semua(2)
洪涛

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.

小葫芦

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!