j**a构造方法的调用

时间:2013.04.03 发布人:umlatsk

j**a构造方法的调用

已解决问题

谷歌umlatsk用户在2013.04.03提交了关于“拉布拉多j**a构造方法的调用”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-03-03T17:17:01。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,你就是当代的活雷锋,太感谢了 !

希望以下的回答,能够帮助你。

第1个回答

用户名:moxo来自38  

首先纠正你一个说法
没有方法名的方法:这个叫做代码块,不是方法,加了static关键字的叫做静态块
没加static关键字的叫做非静态块,也成为缺省块

关于对象的初始化顺序

当new一个子类时对象的初始化顺序为
父类Static块->子类static块->父类缺省块->父类构造函数->子类缺省块->子类构造函数

因此会出现上面的调用结果
选响握表至于为什么是这个顺序,答案是没有为什么.在j**a诞生的时候别人就是这样规定的,一开始就移前宁内超够规定好了,j**a虚拟机就是这样工作的.

另外
子类的构造方法里面必须使用supper调用父类的某个构造方法.
如果你没有使用supper调用的话,程序会默认调用父类的无参构造方法
因此,你不使用supp乎良搞脚罗er调用的话,必须保父类有装一个无参构造方法
否则编译都不能通过

再另外
定义一个类的时候,如果没有显式定义任何构造方法,那么默认这个类有一个无参构造方法.如果显式定义了任何一个构造方法,那么只有这些被定义的构造方法才是这个类的艺频商促容拥有的构造方法.