JAVA之父子类的构造函数、静态代码块等执行顺序
2015-07-27 22:27
751 查看
欢迎转载,请附出处:
http://blog.csdn.net/as02446418/article/details/47092769
最近在做项目时遇到了Java构造函数,代码块的一些执行顺序方面的知识,随兴做了个实验,毕竟实践出真知嘛。遇到的问题简单说一下就是在子类A继承父类B的时候,如果在代码中
这个时候父类和子类的静态代码块和构造函数执行的先后顺序到底是怎么样的呢?
我得出的结论是
父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数
下面看代码:
输出结果:
代码并不难,这里尤其注意到输出结果中子类的静态代码块是紧跟在父类的静态代码块后面的,这个地方大家尤其应该注意一下。
http://blog.csdn.net/as02446418/article/details/47092769
最近在做项目时遇到了Java构造函数,代码块的一些执行顺序方面的知识,随兴做了个实验,毕竟实践出真知嘛。遇到的问题简单说一下就是在子类A继承父类B的时候,如果在代码中
A a = new A();
这个时候父类和子类的静态代码块和构造函数执行的先后顺序到底是怎么样的呢?
我得出的结论是
父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数
下面看代码:
public class Parent { public Parent(){ System.out.println("parent constructor method"); } static{ System.out.println("parent static code"); } //非静态代码块 { System.out.println("parent nonStatic code"); } }
public class Children extends Parent{ public Children(){ System.out.println("children constructor code"); } static{ System.out.println("children static code"); } //非静态代码块 { System.out.println("children nonStatic code"); } public static void main(String[] args){ Children c = new Children(); } }
输出结果:
代码并不难,这里尤其注意到输出结果中子类的静态代码块是紧跟在父类的静态代码块后面的,这个地方大家尤其应该注意一下。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树