zoukankan      html  css  js  c++  java
  • java类执行顺序

    参考:https://www.cnblogs.com/timetellu/p/11619158.html

    一、类的执行顺序

     1、静态变量和静态块赋值(按照声明顺序)

     2、构造代码块(构造代码块在创建对象时被调用,每次创建对象都会调用一次,但是优先于构造函数执行。)

     3、构造函数

    public class Constructor {
        static Constructor dd = new Constructor("静态变量");
    
        static {
            System.out.println("静态代码块");
        }
    
        {
            System.out.println("构造代码块");
        }
    
        public Constructor(){
            System.out.println("无参构造函数");
        }
    
        public Constructor(String str){
            System.out.println(str);
        }
    
        public static void main(String[] args) {
            new Constructor();
            System.out.println();
        }
    }

    结果:

     二、父类、子类的加载顺序

      1、父类的静态变量和静态块赋值(按照声明顺序)
      2、自身的静态变量和静态块赋值(按照声明顺序)
      3、父类的成员变量和块赋值(按照声明顺序)
      4、自身成员变量和块赋值(按照声明顺序)

    public class Constructor {
        static String ss="父类的静态变量";
        static {
            System.out.println(ss);
            System.out.println("父类的静态代码块");
        }
        {
            System.out.println("父类的构造代码块");
        }
        public Constructor(){
            System.out.println("父类的无参构造函数");
        }
    }
    
    class ConstructorSon extends Constructor{
        static String dd = "子类的静态变量";
        static {
            System.out.println(dd);
            System.out.println("子类的静态代码块");
        }
        {
            System.out.println("子类的构造代码块");
        }
        public ConstructorSon(){
            System.out.println("子类的无参构造函数");
        }
    
        public static void main(String[] args) {
            new ConstructorSon();
        }
    }

    结果:

  • 相关阅读:
    理解C#系列 / 核心C# / 常量
    理解C#系列 / 核心C# / 变量
    理解C#系列 / C#语言的特性
    理解C#系列 / .NET体系结构
    利用DMZ对象保护全局变量
    随手翻的一道摩拜校招题
    关于为函数形参赋值和搜索变量标识符的云云
    竟然修改形参有这么可怕的后果!!
    牛得一逼的delete操作符
    屏蔽属性
  • 原文地址:https://www.cnblogs.com/JoeyWong/p/12456030.html
Copyright © 2011-2022 走看看