美文网首页
Java静态代码块、代码块、构造函数的执行顺序

Java静态代码块、代码块、构造函数的执行顺序

作者: 冰花水焰 | 来源:发表于2020-07-04 16:23 被阅读0次

    执行顺序:静态代码块====》非静态代码块====》构造函数
    静态代码块只执行一次

    public class MyNumber {
       public MyNumber() {
          System.out.println("父类构造方法");
    
       }
    
       static {
          System.out.println("父类静态代码块");
       }
    
       {
          System.out.println("父类非静态代码块");
       }
    
       public static void main(String[] args) {
          System.out.println("main");
          new MyNumber();
          new MyNumber();
       }
    
    }
    /*
    父类静态代码块
    main
    父类非静态代码块
    父类构造方法
    父类非静态代码块
    父类构造方法
    */
    

    扩展:当有继承的时候的执行顺序

    public class One extends MyNumber{
        public One() {
            System.out.println("子类构造方法");
        }
    
        static {
            System.out.println("子类静态代码块");
        }
    
        {
            System.out.println("子类非静态代码块");
        }
    
        public static void main(String[] args) {
            System.out.println("main");
            new One();
        }
    
    }
    
    public class MyNumber {
        public MyNumber() {
            System.out.println("父类构造方法");
    
        }
    
        static {
            System.out.println("父类静态代码块");
        }
    
        {
            System.out.println("父类非静态代码块");
        }
        
        public static void main(String[] args) {
            System.out.println("main");
            new One();
        }
    
    }
    /*
    ////// 分割线
    // 在子类中执行main方法
    父类静态代码块
    子类静态代码块
    main
    父类非静态代码块
    父类构造方法
    子类非静态代码块
    子类构造方法
    // 如果再new One(); 执行顺序姿势main下面的再执行一遍,静态部分只是执行一次
        
    在父类中执行main()方法 执行顺序如下。这也说明了静态代码块只执行一次
    父类静态代码块
    main
    子类静态代码块
    父类非静态代码块
    父类构造方法
    子类非静态代码块
    子类构造方法
       */ 
    

    相关文章

      网友评论

          本文标题:Java静态代码块、代码块、构造函数的执行顺序

          本文链接:https://www.haomeiwen.com/subject/xkbuqktx.html