专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » 多继承的构造顺序:Java中,父类和子类的构造顺序和时机 »正文

多继承的构造顺序:Java中,父类和子类的构造顺序和时机

来源: 发布时间:星期四, 2009年2月12日 浏览:109次 评论:0


下面是个完整测试类:

/**
*@(#)TestJava.java2008-2-22
*
*Copyright2007GeneralData,Inc.Allrightsreserved.
*/
packagecom.bbebfe;

/**
*这个类测试父类和子类构造时机
*父类中有个(抽象)思路方法prt;
*子类(实现)覆盖了这个思路方法并打印\"inchild\"+ii是
*子类中定义个成员字段设定初值为10
*
*在父类构造中prt
*如果能够成功介绍说明子类对象在子类构造思路方法执行前
*已经在内存中构造好了(父类构造思路方法会在子类构造
*思路方法前执行)如果子类对象没有在内存中存在
*不可能执行打印更不能打印成员字段i
*
*最终执行结果是成功打印\"inchild0\"介绍说明能够执行打印
*介绍说明子类对象内存已经分配
*但i值打印为0介绍说明内存虽然已经分配但成员字段尚未执行显示
*默认化为0
*在Child构造中打印i值为10介绍说明成员字段显示化在内存分配
*和构造体的间进行
*
*因此可以看出个Java对象具体构造过程(不包含静态结构):
*1.父类对象内存分配
*2.父类字段默认
*3.子类对象内存分配
*4.子类字段默认
*5.进入父类构造->父类成员显示化(定义字段时设置字段初值)
*->执行父类构造体(此时可以抽象思路方法所有父类字段已
*化完毕但子类字段尚未进行显示化)
*6.进入子类构造->子类成员显示化(定义字段时设置字段初值)
*->执行子类构造体(此时所有字段已经显示化)
*
*因此父类构造中可以抽象思路方法(子类实现)但最好
*不要这样做子类对象仅仅分配了内存和默认还没有
*进行显示
*@projectTestJava
*
@authorchenhao
*
@version1.0.0,2008-2-22
*/
publicTestJava{

publicvoid(Stringargs){
Childc
=Child;
}
}
ChildextendsFather
{
i=10;
/**
*这个构造思路方法是没有必要写默认构造
*肯定是按这个顺序执行但为了表示明确
*目因此把这个默认构造写出来
*
*/
publicChild{


super;
.out.prln(i);
}
@Override
publicvoidprt{
.out.prln(
\"inchildi=\"+i+\"k=\"+k);
}
}

abstractFather
{
protectedk=5;
publicFather{
prt;
}
publicvoidprt{
.out.prln(
\"inFatherk=\"+k);
}
}


0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: