站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题求助:构造函数执行顺序的问题?

求助:构造函数执行顺序的问题?

摘要: 求助:构造函数执行顺序的问题?


class SuperServer
{
public SuperServer(){
System.out.println(" all ");
}
public SuperServer(int y){
this();
System.out.println(" good ");
}
};

class TestServer extends SuperServer
{
public TestServer(int y){
System.out.println(" things ");
}
public TestServer(){
super(10);
System.out.println(" come ");
}
public static void main(String [] args){
TestServer ts = new TestServer();
}
};

以上这段程序调试输出为:all
good
come

但我认为少一个 all
我是这样理解的:首先执行TestServer的父类SuperServer的无参构造函数,输出一个 all
然后,执行TestServer的无参构造函数,其中通过调用super(10),再次调用父类的带参构造函数,其中 this() 在输出一个 all,然后输出 good 最后,输出 come

请高手指出我的错误,谢谢!


如果构造函数中包含super(...),那么它将作为初始化父类所使用的构造函数
并且super只能放在构造函数第一行


如果子类的构造函数中没有super(),就先调用父类的构造函数,然后才是子类的构造函数,
如果子类的构造函数中出现super(),就通过super调用父类的构造函数(只调用父类构造函数这一次),然后才是子类的构造函数,这样理解,对不?


是的


子类必须调用父类的构造方法,并且要放在子类构造方法的第一句。

如果你的子类第一句不是super()或super(参数),系统会自动加上super()来调用的。


mark.........


this();会执行父类的无参构造函数


super(10);
调用的父类的有参构造函数
然后以遇到this();再调用父类无参构造函数


没错阿
是这个结果阿
同意楼上的说法。
呵呵~



我是新来的.学习中.感谢楼主的问题啊!又省一本书.接分!


↑返回目录
前一篇: JBossOpenTool .jar 这个文件倒底在用jbuilder + jboss 中用不用啊!!!
后一篇: 不用线程,可否实现某个函数定时被调用的功能?