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)> 执行无参构造器内部代码(输出了“无参构造器执行”)> 结束

  • 相关阅读:
    C语言知识点
    VS Studio 相关知识点
    类——继承、复合、委托
    类(传入的形参为指针形式)-字符串的实现
    类(传入的形参为非指针形式)-复数的实现
    C++需要掌握的重点内容
    目标跟踪相关资料
    夏天在威海,冬天在昆明
    短时目标跟踪
    php实现中文反转字符串的方法
  • 原文地址:https://www.cnblogs.com/xdyixia/p/9180612.html
Copyright © 2011-2022 走看看