• java类与继承的执行顺序


    1.子类

    public class TestClassLife extends TestClassLifeSuper {    
    
        public TestClassLife() {
            System.out.println("3.构造行数被访问");
        }
    
        {
            System.out.println("2.初始化块被访问");
        }
    
        static {
            System.out.println("1.静态初始化块被访问");
        }
     
        public void Go() {     
            System.out.println("4.方法体");
        }
    }

    2.父类

    public class TestClassLifeSuper {    
        public TestClassLifeSuper() {
            System.out.println("3.父构造行数被访问");
        }
    
        {
            System.out.println("2.父初始化块被访问");
        }
    
        static {
            System.out.println("1.父静态初始化块被访问");
        }
    
        private static String a = "1";
        
        public void Go() {
            String b = a;
            System.out.println("4.父方法体");
        }
    }

    最终执行结果

    1.父静态初始化块被访问
    1.静态初始化块被访问
    2.父初始化块被访问
    3.父构造行数被访问
    2.初始化块被访问
    3.构造行数被访问
    4.方法体

    总统逻辑,先静态初始化,然后普通初始化,然后构造函数,先父后子。特殊情况,子类的静态初始化会紧跟父类的静态初始化

  • 相关阅读:
    抽象类存在的意义
    抽象类的特征
    抽象类的使用
    抽象类的概述
    引用类型作为方法参数和返回值
    继承的特点
    目前Java水平以及理解自我反思---01
    继承后- 构造器的特点
    指针函数
    C数组灵活多变的访问形式
  • 原文地址:https://www.cnblogs.com/happyday56/p/4159650.html
Copyright © 2020-2023  润新知