首页 > 代码库 > JAVA继承中的构造器调用

JAVA继承中的构造器调用

关于继承中的构造器调用和调用顺序,做了个小测试,如下:

class People {
 String name;
 
 //2,第二步,调用此无参构造器
 public People() {
  System.out.println("、父类的无参构造器");
 }
 
 //5,调用此有参构造器
 public People(String name) {
  System.out.println("、父类的有参构造器");
  this.name = name;
 }

}

class Child extends People {
 People father;
 
 public Child() {
  System.out.println("、子类的无参构造器");
 }
 
 //3,创建使历史传递了参数"mike",所以第三步会调用子类有参构造器
 public Child(String name) {
  System.out.println("、子类的有参构造器");
  this.name = name;
  
  //4,此处创建了People的实例并传递了参数,所以会调用父类有参构造器
  father = new People(name + ":F");
 }

 public static void main(String[] args) {
  System.out.println("子类创建实例时的构造函数调用顺序:");
  new Child("mike");//1,创建子类实例,由于Child类没有显示调用People的构造器,所以默认调用People的无参构造器
  
//  new Child();//不传递参数,则第一步调用父类无参构造器,然后调用自身的无参构造器。
 }
}

当前状态下执行main方法,输出如下内容:

子类创建实例时的构造函数调用顺序:

、父类的无参构造器

、子类的有参构造器

、父类的有参构造器


若子类没有显示调用父类构造器,当子类创建实例时 ,会调用父类的无参构造器,若父类没有无参构造器,则会报错。


本文出自 “明月松间照” 博客,请务必保留此出处http://javawutong.blog.51cto.com/12881544/1922764

JAVA继承中的构造器调用