zoukankan      html  css  js  c++  java
  • java方法调用顺序


    public class JavalearningApplicationTests { static { System.out.println("Test的静态代码块"); } public static void main(String[] args) { System.out.println("执行main方法"); B b = new B(); b.excute(); } }

    具体类方法:

    public class B extends A{
        static {
            System.out.println("ClassB的静态代码块");
        }
    
        public B() {
            System.out.println("ClassB的构造方法");
        }
    
        {
            System.out.println("ClassB的构造代码块");
        }
    
        public final static B Classb = new B();
    
        public void excute(){
            System.out.println("执行方法");
        }
    }
    

     A:

    public class A {
        static {
            System.out.println("ClassA的静态代码块");
        }
    
        public A() {
            System.out.println("ClassA的构造方法");
        }
    
        {
            System.out.println("ClassA的构造代码块");
        }
    }
    

    执行结果:

    Test的静态代码块
    执行main方法
    ClassA的静态代码块
    ClassB的静态代码块
    ClassA的构造代码块
    ClassA的构造方法
    ClassB的构造代码块
    ClassB的构造方法
    ClassA的构造代码块
    ClassA的构造方法
    ClassB的构造代码块
    ClassB的构造方法
    执行方法
    

     结论:

    1、同一个类中执行先后顺序:

    静态代码块-->(构造代码块-->构造方法)

    2、子类和父类的先后顺序

    父类 静态代码块-->子类 静态代码块

    -->父类构造代码块--父类构造方法

    --子类构造代码块--子类构造方法

    先父类后子类,构造代码块和构造方法一起执行之后再执行子类 

    3、最后执行对象方法

    如果类还没有被加载:
    1、先执行父类的静态代码块和静态变量初始化,并且静态代码块和静态变量的执行顺序只跟代码中出现的顺序有关。
    2、执行子类的静态代码块和静态变量初始化。
    3、执行父类的实例变量初始化
    4、执行父类的构造函数
    5、执行子类的实例变量初始化
    6、执行子类的构造函数

  • 相关阅读:
    产品经理必备工具之一:Axure产品原型设计
    解决UserDefault读取慢的问题
    MAC常用快捷键
    asi网络请求中遇到的一些问题的解决
    oc运行时runtime
    图片拉伸,气泡式
    ios nil、NULL和NSNull 的使用
    错误:linker command failed with exit code 1 (use v to see invocation)
    ios url 编码和解码
    SQL重置数据表id
  • 原文地址:https://www.cnblogs.com/Jordandan/p/9670507.html
Copyright © 2011-2022 走看看