java对象实例化过程中的代码执行顺序
2017-08-10 08:53
549 查看
java对象实例化过程中的代码执行顺序
1、执行顺序
(1)执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容; (2)子类的静态内容执行完毕之后,初始化父类的成员变量--->执行父类的非静态语 句块--->执行父类的构造方法。 (3)父类的构造方法执行完毕之后,初始化子类的成员变量--->执行子类的非静态语 句块--->执行子类的构造方法。
2、例证
(1)Base.javapublic class Base{ public String whenAmISet = "set when declared in parent class"; Base() { System.out.println("4 parent Constructor , it will invoke preProcess() from child class."); preProcess(); //调用子类的preProcess; } void preProcess() {} //静态语句块 static { System.out.println("1 parent static block "); } //非静态语句块 { System.out.println("3 parent dynamic block , after initialized filed from parent class,"); } }
(2)Derived.java
public class Derived extends Base { public String whenAmISet = "set when declared"; @Override void preProcess() { whenAmISet = "set in preProcess()"; } Derived() { System.out.println("6 child constructor "); } static { System.out.println("2 child static block"); } { System.out.println("5 child dynamic block , after initialized filed from child class."); } }
(3)Main.java
public class Main { public static void main(String[] args) { Derived d = new Derived(); System.out.println( d.whenAmISet ); } }
输出:
1 parent static block
2 child static block
3 parent dynamic block , after initialized filed from parent class,
4 parent Constructor , it will invoke preProcess() from child class.
5 child dynamic block , after initialized filed from child class.
6 child constructor
set when declared
提示:想观察执行顺序,可在eclipse选用debug模式,在每行代码输出处打断点观察执行顺序。
参考资料:
(1)Java 静态语句块、语句块、构造函数执行顺序
http://www.cnblogs.com/jycboy/p/5257615.html
相关文章推荐
- Java面向对象笔记(七)实例化对象时代码执行顺序
- Java中创建对象的时候代码执行顺序
- Java中创建对象时,初始化成员变量的代码的执行顺序
- java程序在执行过程中,类,对象以及它们成员加载、初始化的顺序如下:
- java类的初始化块/执行顺序,实例化对象数据赋值
- java-----建立对象时代码执行顺序
- java创建对象时代码执行顺序探讨
- Java中创建对象时代码执行顺序
- java 父类访问子类对象的实例变量 继承过程中的执行顺序
- java类的初始化块/执行顺序,实例化对象数据赋值
- 《对象创建过程中 实例化的顺序》摘自《Thinking in JAVA》
- Java对象的构造过程---子类继承父类时(非)静态块及构造函数等的执行顺序
- 再学 JAVA基础(5)对象转型,多态。【子类对象的实例化过程】
- JAVA对象创建执行顺序实验
- JAVA中子类对象的实例化过程
- JVM学习笔记(1、 基本结构;2、Java代码编译和执行的整个过程3、内存管理和垃圾回收 4、 内存调优 )
- Java父子类静态代码/非静态代码/构造函数执行顺序
- java对象的实例化过程
- 再学Java 基础(3)类与对象【构造函数以及其执行顺序----经典讲解】重点!!!
- 执行具有root权限的java代码 am pm的实现过程原理