先于对象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有所信息上的积累.
又想起来鲁迅的那句话:"人类的...前行的历史,正如煤的形成,当时用大量的木材,结果却只是一小块,但...是不在其中的,更何况是徒手...".
呵呵....
- 17:44
- 浏览 (206)
- 评论 (0)
- 分类: Coder碎语
- 发布在 discovery & surprise 圈子
- 相关推荐
发表评论
- 浏览: 29388 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
链接
最新评论
-
对浏览器中的context menu ...
Drag dropper
-- by whqida -
Spring中的load-time weav ...
没啥,有些class不在spring的管理之中,通过 load-time wea ...
-- by ray_linn -
对浏览器中的context menu ...
别搞笑了, 这是浏览器的 Context Menu? 这只不过是响应了鼠标右击事 ...
-- by fcoffee -
IE tab在Firefox里开发时 ...
firebug只能用于ff, 并不能用于ff下的ietab, 原因显而易见.如果 ...
-- by fcoffee -
IE tab在Firefox里开发时 ...
还网告知 该如何操作呢 我还是要到ie下再调试啊
-- by jianfeng008cn






评论排行榜