• 子类与父类中静态代码块、匿名代码块、构造器的执行顺序


    先看结论,执行顺序为
    父类静态代码块-->>子类静态代码块-->>父类匿名代码块-->>父类构造器-->>子类匿名代码块-->>子类构造器
    其中静态代码块在初始化时会被调用,但是匿名代码块与构造器只有在创建对象时才会调用。
    上代码:
    父类

    public class InitSuper {
    	static {
    		System.out.println("InitSuper static{}");
    	}
    
    	{
    		System.out.println("InitSuper {}");
    	}
    
    	public InitSuper() {
    		super();
    		System.out.println("InitSuper Init()");
    	}
    }
    

    子类

    public class InitSub extends InitSuper{
    	
    	static {
    		System.out.println("InitSub static{}");
    	}
    	
    	{
    		System.out.println("InitSub {}");
    	}
    	
    	public InitSub() {
    		super();
    		System.out.println("InitSub Init()");
    	}
    	
    	public static void main(String[] args) {
    		new InitSub();
    	}
    }
    

    执行结果:

    InitSuper static{}
    InitSub static{}
    InitSuper {}
    InitSuper Init()
    InitSub {}
    InitSub Init()
    

    注意:把子类main方法中的new InitSub()删掉后在运行,只会调用静态代码块,因为执行main方法只触发初始化动作,但没有创建对象。

  • 相关阅读:
    sql中触发器的使用
    sql中优化查询
    sql中case when语句的使用
    CSRF学习小结
    javascript正则表达式笔记
    elementUI单选框获取值
    elementUI内置过渡(折叠)
    elementUI内置缩放过渡(缩放)
    elementUi内置过渡动画(淡入)
    创建koa2项目
  • 原文地址:https://www.cnblogs.com/minghaiJ/p/11319961.html
Copyright © 2020-2023  润新知