zoukankan      html  css  js  c++  java
  • 初始化块、静态初始化块、构造函数的执行顺序

    package com.ocr;
    
    class A {
        static {
            System.out.println("Static init A.");
        }
    
        {
            System.out.println("Instance init A.");
        }
    
        A() {
            System.out.println("Constructor A.");
        }
    }
    
    class B extends A {
        static {
            System.out.println("Static init B.");
        }
    
        {
            System.out.println("Instance init B.");
        }
    
        B() {
            System.out.println("Constructor B.");
        }
    }
    
    class C extends B {
    
        static {
            System.out.println("Static init C.");
        }
    
        {
            System.out.println("Instance init C.");
        }
    
        C() {
            System.out.println("Constructor C.");
        }
    }
    
    public class Main {
    
        static {
            System.out.println("Static init Main.");
        }
    
        {
            System.out.println("Instance init Main.");
        }
    
        public Main() {
            System.out.println("Constructor Main.");
        }
    
        public static void main(String[] args) {
            C c = new C();
            // B b = new B();
        }
    }

    执行结果

    Static init Main.
    Static init A.
    Static init B.
    Static init C.
    Instance init A.
    Constructor A.
    Instance init B.
    Constructor B.
    Instance init C.
    Constructor C.

    结论:静态代码块优先于说有代码块执行,且从最顶级父类执行

    顺序:父类的静态代码块->子类的静态代码块->父类的构造代码块->父类的构造方法->子类的构造代码块->子类的构造方法

  • 相关阅读:
    log4j 悟寰轩
    初学PHP 悟寰轩
    java基本语法注意问题 悟寰轩
    HTTP协议基础 悟寰轩
    SSHweb.xml详解 悟寰轩
    windows和linux查找被入侵后留下的后门文件 悟寰轩
    MFC Link problem
    Manually Walking a Stack
    linux试用(2)安装 mplayer, g++
    子集和问题
  • 原文地址:https://www.cnblogs.com/xyzxy/p/12592250.html
Copyright © 2011-2022 走看看