zoukankan      html  css  js  c++  java
  • Java中static块、构造块、构造函数的执行顺序

    最近被一个面试题难住了,看来之前对JAVA的执行顺序欠了解。以为原面试题代码:

    public class Example {
        public static void main(String[] args) {
    
            HelloB bb = new HelloB();
        }
    }
    
    class HelloA {
        public HelloA() {
            System.out.println("HelloA");
        }
    
        {
            System.out.println("I'm A class");
        }
        static {
            System.out.println("static A");
        }
    }
    
    class HelloB extends HelloA {
        public HelloB() {
            System.out.println("HelloB");
        }
    
        {
            System.out.println("I'm B class");
        }
        static {
            System.out.println("static B");
        }
    
        public static void main(String[] args) {
            new HelloB();
        }
    }
    View Code

    执行结果是:

    static A
    static B
    I'm A class
    HelloA
    I'm B class
    HelloB

    得出以下总结:
    1. 当调用JAVA子类的无参构造函数时,虽然子类无参构造函数没有显式调用其父类的无参构造函数,但是Java会自动调用其父类的无参构造器 (注:有参构造函数需要显式调用)
    2. JAVA的执行顺序是:父类静态块 -> 子类静态块 -> 父类构造块 -> 父类构造函数 -> 子类构造块 -> 子类构造函数

  • 相关阅读:
    阅读笔记2
    阅读笔记1
    学习进度条
    第二阶段冲刺第七天站立会议
    第二阶段冲刺第六天站立会议
    第二阶段冲刺第五天站立会议
    阅读笔记4
    第二阶段冲刺第四天站立会议
    第一阶段意见评论
    第12周学习进度总结
  • 原文地址:https://www.cnblogs.com/mrhgw/p/13050024.html
Copyright © 2011-2022 走看看