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();
        }
    }

    结果:

  • 相关阅读:
    理解HashSet及使用
    Java 集合类详解
    Java-泛型编程-使用通配符? extends 和 ? super
    回调函数及其用法
    log4j.properties 详解与配置步骤
    约瑟夫环
    泛型的约束与局限性
    把代码字体加大的办法
    System.arraycopy方法
    泛型数组列表与反射
  • 原文地址:https://www.cnblogs.com/JoeyWong/p/12456030.html
Copyright © 2011-2022 走看看