java构造器的调用顺序

新的奇迹 2012-09-05 08:07:37

class Creature
{
public Creature()
{
System.out.println("Creature无参数的构造器");
}
}
class Animal extends Creature
{
public Animal(String name)
{
System.out.println("Animal带一个参数的构造器,该动物的name为" + name);
}
public Animal(String name , int age)
{
//使用this调用同一个重载的构造器
this(name);
System.out.println("Animal带2个参数的构造器,其age为" + age);
}

}
public class Wolf extends Animal
{
public Wolf()
{
//显式调用父类有2个参数的构造器
super("土狼", 3);
System.out.println("Wolf无参数的构造器");
}
public static void main(String[] args)
{
new Wolf();
}
}

上面的程序的main方法,只创建了一个Wolf对象,但是底层却做了很多操作,我是java初学者,不知底层执行的顺序,并求详解一下
...全文
306 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuguitong163 2012-09-11
  • 打赏
  • 举报
回复
父类的初始化先调用,然后再显示的调用
zuixijin 2012-09-11
  • 打赏
  • 举报
回复
会先对父类进行初始化,然后才会进行到本身的显示的调用。
nmyangym 2012-09-06
  • 打赏
  • 举报
回复
参考下这个,根据你的程序体会一下:
http://wenwen.soso.com/z/q191435823.htm
安特矮油 2012-09-05
  • 打赏
  • 举报
回复

class Creature
{
public Creature()
{
System.out.println( "Creature无参数的构造器 "); //1父类会被Animal(String name)隐式调用
}
}
class Animal extends Creature
{
public Animal(String name) {
System.out.println( "Animal带一个参数的构造器,该动物的name为 " + name); //2被本类的Animal(String name, int age)调用

}
public Animal(String name , int age) {
//使用this调用同一个重载的构造器
this(name);
System.out.println( "Animal带2个参数的构造器,其age为 " + age); //3被子类Wolf调用

}

}
public class Wolf extends Animal
{
public Wolf()
{
//显式调用父类有2个参数的构造器
super( "土狼 ", 3);
System.out.println( "Wolf无参数的构造器 "); //4最后打印
}
public static void main(String[] args)
{
new Wolf();
}
}
iGoodLoser 2012-09-05
  • 打赏
  • 举报
回复
也就是说在这个类继承结构中,最顶层的类会最先被加载!如Object
iGoodLoser 2012-09-05
  • 打赏
  • 举报
回复
java中在初始化子类对象实例时,会先加载并初始化父类!所以子类构造器中必需调用父类构造器,如没有显示调用,则jvm会默认调用父类默认构造器(无参数的),如果此时父类没有无参构造器,则会报错!
新的奇迹 2012-09-05
  • 打赏
  • 举报
回复
运行结果是:
Creature 无参数的构造器
Animal 带一个参数的构造器
Animal 带两个参数的构造器,其age为3
Wolf 无参数的构造器


我不解的是
super( "土狼 ", 3); 为显示调用,而且这里的继承层次很多,显示的调用和父类的初始化到底哪个先哪个后

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧