关于java对像初始化

当new一个对像时,

首先肯定是为这个对像分配空间,然后进行隐式或显示的初始化。这些在任何java书肯定都会提到。



但有的时候 ,实际应用中仅知道这些就不够了,现将我的测试总结记录如下 :



当完成了以上的显/隐式初始化后,这时候大家就把关注点放在了构造方法那了。

在执行构造方法其实并非完全顺序执行的。

首先要执行的当然是super (注;任何一个构造都必然在第一行包括super,就是没 

有显示的写出,系统也会自动隐式加入),

干完super,完事了。这时并不会继续在这构造方法里执行后面的语句。而是另寻新

欢,去执行所new类里的语句块(即在类中单独用{ 和}这两个东西夹起来的那一部分,

当然,如果没有初夹的这些就肯定没有这一步了)。

好了,现在才真正是要执行刚才提到的那个构造方法里的后面的语句了。

但是,当这个有super的构造被类中的其它构造调用,而且在new时,参数所决定的 

构造又是那个要调这个构造的构造。即这个构造的第一行是this,(有this当然就没有

super了。当然,系统在第一行还是会有隐式的super)

现在再看是怎么执行构造的:

首先肯定是调用这个参数所决定的构造。在这起初不要忘了,系统可会隐式的在第

一行加了super。是去执行super了。然后才根据this。去找那个有super构造。

当然,我们现在要看那个有super的构造了。执行顺序就如上所述。

     OK了,就回到了这个被决定,即没有super的构造。这时是一种情况了。算是执行

完super了,因为这里没有super。执行类的语句块吗?答案是否定的。真接在构造里执

行后完成的代码。

还有一点也很重要。

假如类里有两个构造方法,而且都没有显示的super。而且构造S1调用了构造S2。

在new时又是用了S1。在执行S1时,首先执行S1里的隐式super。然后执行类里的语句

快,到this,又遇到隐式super了。这回可不执行这个super了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值