首页 / JAVA / java中构造器的调用顺序
java中构造器的调用顺序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java中构造器的调用顺序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1784字,纯文字阅读大概需要3分钟。
内容图文
![java中构造器的调用顺序](/upload/InfoBanner/zyjiaocheng/1128/4773c91250334930b797bb80dd4e0796.jpg)
在编程的过程中,我们经常会遇到多个类的继承问题,那么多个类的构造器是按照什么顺序调用的呢?
先看一段代码:
1 public class Meal { 2 public Meal() { 3 System.out.println("meal constructor() "); 4 } 5} 6 7publicclass Bread { 8public Bread() { 9 System.out.println("bread constructor() "); 10 } 11} 1213publicclass Cheese { 14public Cheese() { 15 System.out.println("cheese constructor() "); 16 } 17} 1819publicclass Lettuce { 20public Lettuce() { 21 System.out.println("Lettuce constructor() "); 22 } 23} 2425publicclass Lunch extends Meal { 26public Lunch() { 27 System.out.println("Lunch constructor() "); 28 } 29} 3031publicclass PortableLunch extends Lunch { 32public PortableLunch() { 33 System.out.println("PortableLunch constructor() "); 34 } 35} 3637publicclass Sandwich extends PortableLunch{ 38private Bread bread=new Bread(); 39private Cheese cheese = new Cheese(); 40private Lettuce lettuce= new Lettuce(); 41public Sandwich(){ 42 System.out.println("Sandwich constructor() "); 43 } 4445publicstaticvoid main(String[] args) { 46new Sandwich(); 47 } 48 }
上面一段代码显示多个类之间的关系:
每个类都有自己的初始化方法。
下面为打印输出的内容:
1 meal constructor() 2 Lunch constructor() 3 PortableLunch constructor() 4 bread constructor() 5 cheese constructor() 6 Lettuce constructor() 7 Sandwich constructor()
构造器的调用遵循以下的顺序:
(1):调用基类构造器。这个步骤会不断地反复递归下去,首先是构造这种层次结构的根,然后是下一层导出类,等等,直到最低层的导出类。
(2):按声明顺序调用成员的初始化方法。 .
(3):调用导出类构造器的主体。(也就是文中的main方法中的内容)
这样做的最终目的:让方法中的所有成员变量都得到初始化。
构造器的调用顺序是很重要的。当进行继承时,我们已经知道基类的一切,并且可以访问基类中任何声明为public和protected的成员。这意味着在导出类中,必须假定基类的所有成员都是有效的。一种标准方法是,构造动作一经发生,那么对象所有部分的全体成员都会得到构建。然而,在构造器内部,我们必须确保所要使用的成员都已经构建完毕。为确保这一目的,唯一的办法就是首先调用基类构造器。那么在进入子类构造器时,在基类中可供我们访问的成员都已得到初始化。此外,知道构造器中的所有成员都有效也是因为,当成员对象在类内进行定义的时候,只要有可能,就应该对它们进行初始化(也就是说,通过组合方法将对象置于类内).
若遵循这一规则,那么就能保证所有基类成员以及当前对象的成员对象都被初始化了。
原文:http://www.cnblogs.com/xiaxj/p/6806568.html
内容总结
以上是互联网集市为您收集整理的java中构造器的调用顺序全部内容,希望文章能够帮你解决java中构造器的调用顺序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。