先于对象init之前调用其方法.

先于对象init之前调用其方法.

前些天写代码时发现这样一个现象:就是在子类对象construct完成之前就可以调用其方法了.

我当时写的代码大致是这样的:

public  abstract  class Parent{
    protected String name;

    public Parent(){     // -------------------- 1
        name = initName();
    }
    protected abstract String initName();
}

public class Child extends Parent{
    public Child(){   // -------------------- 2
        super();
    }

    protected String initName(){   // -------------------- 3
        this.name = "rmn190";
    }
}

现在先不说这样的代码设计上有什么问题(后来发现设计上是很畸形的),当用Eclipse的debug跟踪"Parent someone = new Child();"的执行步骤时,发现3在2还没执行完就执行了.

......................

写到这里觉得自己发现这个现象很可笑的,本来就是嘛,谁也没有说3不能在someone初始化完成之前不能被调用呀.

不过,把这个问题记下来,写在这里权当是对以后的类似问题的一个借鉴吧,也希望能对以后的深入研究Java有所信息上的积累.

又想起来鲁迅的那句话:"人类的...前行的历史,正如煤的形成,当时用大量的木材,结果却只是一小块,但...是不在其中的,更何况是徒手...".

呵呵....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值