189 8069 5689

java构造器的执行顺序是什么

这篇文章给大家介绍java构造器的执行顺序是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、做网站、铅山网络推广、成都微信小程序、铅山网络营销、铅山企业策划、铅山品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供铅山建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

1,在没有静态块的情况下,子类的对象创建时,父类的无参构造器-->子类的构造器(产生对象的构造器,如果

是无参则执行的是无参构造器,如果执行的是有参则执行的有参构造器)

现在的父类中只有两个构造器:

Father.java   Father {      public Father(){          System.out.println("我是父类的无参构造器");      }             public Father(String username){          System.out.println("我是父类有参构造器,传过来的参数是+"+username);      }  public class SonDemo extends Father{         public SonDemo(){          System.out.println("我是--子类--的无参构造器");      }      public SonDemo(String username){          System.out.println("我是子类的有参构造器,参数是"+username);      }             public void sys(){          System.out.println("我是子类的sys方法");      }             public static void main(String[] args) {          //里面的内容在下面有说明      }                       }

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

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

SonDemo son = new SonDemo();         }

我是父类的无参构造器

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

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

SonDemo的main方法中加入

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

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

我是父类的无参构造器

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

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

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

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

SonDemo的main方法中加入

我是父类的无参构造器

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

我是父类的无参构造器

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

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

2.如果在子类和父类中存在静态块;执行顺序有会是怎么样的了?

答,静态块会在构造器之前运行。不管是子类还是父类。创建一个对象的时候,会首先加载它的静态块。

Father.java  public class Father {         //静态块      static{          System.out.println("father  static ");      }             public Father(){          System.out.println("我是父类的无参构造器");      }             public Father(String username){          System.out.println("我是父类有参构造器,传过来的参数是+"+username);      }  }     SonDemo.java  public class SonDemo extends Father{      //静态块      static{          System.out.println("sonDemo static ");      }             public SonDemo(){          System.out.println("我是--子类--的无参构造器");      }      public SonDemo(String username){          System.out.println("我是子类的有参构造器,参数是"+username);      }             public void sys(){          System.out.println("我是子类的sys方法");      }             public static void main(String[] args) {          SonDemo son = new SonDemo();      }  }

①程序的结果:

father static 

sonDemo static 

我是父类的无参构造器 

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

因为在创建子类对象之前:会创建父类的一个对象,而静态块会在main之前被加载,所以两个类的静态块首先执行。

然后执行构造器。

②,如果在子类中的main中只创建父类的对象结果是怎么样的呢?

打印结果:

father static 

sonDemo static 

我是父类的无参构造器

为什么子类的静态块会被加载了?是因为我们是在SonDemo中测试,如果在其他类中测试就不会打印。

总结:我们说了这么多就是重要的一点。静态块会在构造器器之前执行。

关于java构造器的执行顺序是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


文章题目:java构造器的执行顺序是什么
浏览路径:http://cdxtjz.cn/article/ihciog.html

其他资讯