zoukankan      html  css  js  c++  java
  • 子类与父类中静态代码块、匿名代码块、构造器的执行顺序

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

    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方法只触发初始化动作,但没有创建对象。

  • 相关阅读:
    data-icon=""图片还可以是自定义的?
    orientationchange不管用啊
    menu({postion:{my:"left top"},at:"right bottom"})里的my与at会冲突吗
    关于position的疑惑
    Linux
    C++
    MATLAB
    SCE
    SFLA混合蛙跳算法
    memetic algorithm
  • 原文地址:https://www.cnblogs.com/minghaiJ/p/11319961.html
Copyright © 2011-2022 走看看