zoukankan      html  css  js  c++  java
  • 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)> 执行无参构造器内部代码(输出了“无参构造器执行”)> 结束

  • 相关阅读:
    VS2015安装水晶报表
    C# 通过java生成的RSA公钥加密和解密
    T4代码生成器
    产品开发- DFX
    读《31天学会CRM项目开发》记录3
    读《31天学会CRM项目开发》记录2
    读《31天学会CRM项目开发》记录1
    产品开发
    产品开发
    机器视觉
  • 原文地址:https://www.cnblogs.com/xdyixia/p/9180612.html
Copyright © 2011-2022 走看看