java有参无参构造器的的执行顺序
Posted xdyixia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java有参无参构造器的的执行顺序相关的知识,希望对你有一定的参考价值。
这里拿了用数组构造栈的一段代码说明一下
1 public class StackArray<E> { 2 3 private Object[] data = null; 4 private int maxSize; //栈容量 5 private int top = -1; //栈顶指针 6 7 /** 8 * 重写无参构造函数 9 */ 10 StackArray(){ 11 this(10); //默认栈大小为10 (如果这行前面有代码,这行就会报错) 12 System.out.println("无参构造器执行"); 13 } 14 15 /** 16 * 有参构造函数 17 */ 18 StackArray(int initialSize){ 19 if(initialSize >= 0){ 20 this.maxSize = initialSize; 21 data = new Object[initialSize]; 22 top = -1; 23 }else{ 24 throw new RuntimeException("初始化大小不能小于0:" + initialSize); 25 } 26 System.out.println("有参构造器执行"); 27 } 28 29 public static void main(String[] args) { 30 new StackArray(); 31 //new StackArray(20); 32 } 33 }
1)new StackArray()即无参的实例化过程:
找到无参构造器 > 初始化成员变量(引用类型初始化为null,int初始化为0) > this(10)调用有参构造器 > 来到有参构造器并初始化赋值形参(initialSize=10)> 成员变量赋值(例如top=-1)> 执行有参构造器内部代码(输出了“有参构造器执行”)> 执行无参构造器内部代码(输出了“无参构造器执行”)> 结束
2)new StackArray(20)有参的实例化过程:
找到有参构造器 > 初始化赋值形参并初始化成员变量(引用类型初始化为null,int初始化为0) > 成员变量赋值(例如top=-1)> 执行有参构造器内部的代码 > 结束
3)如果无参构造器内没有调用有参构造器,new StackArray()的实例化过程:
找到无参构造器 > 初始化成员变量(引用类型初始化为null,int初始化为0) > 成员变量赋值(例如top=-1)> 执行无参构造器内部代码(输出了“无参构造器执行”)> 结束
以上是关于java有参无参构造器的的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章