码迷,mamicode.com
首页 > 编程语言 > 详细

Java静态代码块、代码块及构造函数执行顺序

时间:2019-09-13 01:14:40      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:show   执行顺序   demo   sas   初始化   运行   方法   自己的   子类   

根据以下程序进行分析

定义一个父类

package sas.LearnJava;

public class ExcuteOrderTest {
    {
        System.out.println("我是在父类开始的普通代码块!");
    }

    public ExcuteOrderTest() {
        System.out.println("我是父类的无参构造函数!");
    }

    public void showSomething() {
        System.out.println("我是父类中定义的方法!");
    }

    static {
        System.out.println("我是在父类中静态的代码块!");
    }
}

定义一个子类

package sas.LearnJava;

public class SubExcuteOrderTest extends ExcuteOrderTest {
    static {
        System.out.println("我是在子类中的静态代码块!");
    }

    public SubExcuteOrderTest() {
        System.out.println("我是子类的无参构造函数!");
    }
    @Override
    public void showSomething() {
        System.out.println("我是子类中定义的方法!");
    }

    public static void test() {
        System.out.println("子类中的静态测试方法");
    }

    {
        System.out.println("我是在子类结束的普通代码块!");
    }
}

再写一个demo使用上述子类

package sas.LearnJava;

public class ExcuteOrderDemo {
    public static void main(String[] args) {
        System.out.println("创建第一个对象");
        SubExcuteOrderTest subExcuteOrderTest1 = new SubExcuteOrderTest();
        System.out.println("创建第二个对象");
        SubExcuteOrderTest subExcuteOrderTest2 = new SubExcuteOrderTest();
    }
}
创建第一个对象
我是在父类中静态的代码块!
我是在子类中的静态代码块!
我是在父类开始的普通代码块!
我是父类的无参构造函数!
我是在子类结束的普通代码块!
我是子类的无参构造函数!
创建第二个对象
我是在父类开始的普通代码块!
我是父类的无参构造函数!
我是在子类结束的普通代码块!
我是子类的无参构造函数!

从运行结果中可以几点:

  • 在创建类的对象时会执行其父类中的代码块及默认的无参构造函数,然后再执行自己的代码块和构造函数
  • 静态代码块、非静态代码块以及构造函数的执行顺序时确定的,与在程序中的位置无关
  • 子类的静态代码块会在父类的静态代码块执行后执行
  • 静态代码块只执行一次,普通代码块随着对象的创建而重新进行初始化
package sas.LearnJava;

public class ExcuteOrderDemo {
    public static void main(String[] args) {
        SubExcuteOrderTest.test();
    }
}
我是在父类中静态的代码块!
我是在子类中的静态代码块!
子类中的静态测试方法

当不创建对象直接调用类的静态方法时,只会执行父类和子类中的静态代码块

Java静态代码块、代码块及构造函数执行顺序

标签:show   执行顺序   demo   sas   初始化   运行   方法   自己的   子类   

原文地址:https://www.cnblogs.com/sasworld/p/11515616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!