构造器的执行顺序

发表于:2012-5-17 09:35

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:彭sir    来源:51Testing软件测试网采编

  1、在没有静态块的情况下,子类的对象创建时,父类的无参构造器-->子类的构造器(产生对象的构造器,如果是无参则执行的是无参构造器,如果执行的是有参则执行的有参构造器)。现在的父类中只有两个构造器:

  1. Father.java  
  2.  Father {  
  3.     public Father(){  
  4.         System.out.println("我是父类的无参构造器");  
  5.     }  
  6.        
  7.     public Father(String username){  
  8.         System.out.println("我是父类有参构造器,传过来的参数是+"+username);  
  9.     }  
  10. public class SonDemo extends Father{  
  11.    
  12.     public SonDemo(){  
  13.         System.out.println("我是--子类--的无参构造器");  
  14.     }  
  15.     public SonDemo(String username){  
  16.         System.out.println("我是子类的有参构造器,参数是"+username);  
  17.     }  
  18.        
  19.     public void sys(){  
  20.         System.out.println("我是子类的sys方法");  
  21.     }  
  22.        
  23.     public static void main(String[] args) {  
  24.         //里面的内容在下面有说明 
  25.     }  
  26.        
  27.        
  28.        
  29. }

  ① 子类使用无参构造器创建对象:

  在SonDemo 的main方法中加入创建对象的代码:

  1. SonDemo son = new SonDemo();  
  2.        
  3. }

  我是父类的无参构造器

  我是--子类--的无参构造器

  ② 子类使用有参构造器创建对象:

  SonDemo的main方法中加入

SonDemo son = new SonDemo("than you ma");

  那么控制台打印的结果是:

  我是父类的无参构造器

  我是子类的有参构造器,参数是than you ma

  也就是说在子类调用无参构造器创建对象的时候,在执行它自己的有参构造器之前首先执行父类的无参构造器。

  ③ 在子类中创建父类的对象,使用无参

  1. SonDemo son = new SonDemo("than you ma");  
  2. Father ff = new Father();

  SonDemo的main方法中加入

  我是父类的无参构造器

  我是--子类--的无参构造器

  我是父类的无参构造器

  调用了父类的无参构造器,有参的创建对象调用的是有参构造器。

  总结:在创建子类对象的时候,首先会调用父类的构造器,让后在调用子类相应的构造器创建对象,在子类创建父类对象时,就是直接调用父类自己相应的构造器。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号