zoukankan      html  css  js  c++  java
  • Java se之静态代码块、代码块、构造函数执行顺序问题

    创建一个父类

    class Father 
    {
    	public static void main(String[] args) 
    	{
    		Father f = new Father();
    	}
    	static{
    		System.out.println("Father Static...");
    	}
    
    	{
    		System.out.println("Father  {}...");
    	}
    
    	Father(){
    		System.out.println("Father()....");
    	}
    }
    

    创建一个子类

    class Son extends Father 
    {
    	public static void main(String[] args) 
    	{
    		Son s = new Son();
    
    		System.out.println("第二个儿子:");
    		Son s2 = new Son();
    
    		System.out.println("第三个儿子:");
    		Son s3 = new Son();
    	}
    
    	static{
    		System.out.println("Son Static...");
    	}
    
    	{
    		System.out.println("Son  {}...");
    	}
    
    	Son(){
    		System.out.println("Son()....");
    	}
    }
    

    执行结果如下:
    这里写图片描述

    总结:

    • 静态代码块最先执行,且执行一次;
    • 代码块每当有对象创建都会执行,但是晚于静态代码块
    • 当静态代码块和代码块执行完后,构造函数再执行
    • 子类继承父类,静态代码块晚于父类的静态代码块执行,但是早于父类的代码块和构造函数执行。

    注意:这一过程可以通过这篇文章类初始化过程初始化阶段做进一步的思考!

  • 相关阅读:
    Django -- 多对多建表增删改查
    Django -- 一对多建表增删改查
    Django -- 图书管理系统
    Django -- 基础
    前端 -- jQuery
    前端 -- JavaScript-BOM
    前端 -- JavaScript-DOM
    前端 -- JavaScript基础
    前端 -- HTML块级标签
    linux目录结构
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608416.html
Copyright © 2011-2022 走看看