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.

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

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

  • 相关阅读:
    CSS属性值一览
    CSS属性一览
    CSS选择器一览
    HTML颜色编码
    游戏
    数据库系统概念
    关于总结
    章节测试
    我的博客皮肤
    Emeditor所有快捷键操作
  • 原文地址:https://www.cnblogs.com/xyzxy/p/12592250.html
Copyright © 2011-2022 走看看