Java静态代码块、代码块及构造函数执行顺序
2019-09-12 23:35
1536 查看
根据以下程序进行分析
定义一个父类
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静态代码块、静态函数、动态代码块、构造函数等的执行顺序
- [Java]Java静态代码块、静态函数、动态代码块、构造函数等的执行顺序
- java继承中父类和子类静态、非静态代码块,构造函数,静态方法的执行顺序
- java中代码执行顺序(静态代码块、构造函数)
- Java父子类中静态代码块与构造函数的执行顺序
- java一般代码块,构造块,构造函数,静态代码块的执行顺序实践
- java 关于Java中静态代码块以及构造函数的执行先后顺序
- java中静态代码块,非静态代码块,构造函数之间的执行顺序
- 2. java中代码块的执行顺序示例(静态、构造、普通代码块,构造函数)
- 由阿里巴巴一道笔试题看Java静态代码块、静态函数、动态代码块、构造函数等的执行顺序
- java关于代码块 , 动态代码块 , 静态代码块 , 静态方法 , 构造函数的执行顺序
- Java类中子类和基类的构造代码块,静态代码块、子类构造函数,基类构造函数的执行顺序
- JAVA继承关系中静态代码块、非静态代码块,构造函数的执行顺序
- 关于Java中静态代码块以及构造函数的执行先后顺序
- 三、Java基础---------关于继承、构造函数、静态代码块执行顺序示例讲解
- Java中构造函数、构造代码块、静态代码块等的执行顺序问题
- 举例说明java中静态代码块、非静态代码块、构造函数的执行顺序
- Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序
- java中的静态代码块、构造代码块、构造函数执行顺序
- JAVA之父子类的构造函数、静态代码块等执行顺序