类初始化顺序执行结果
来源:互联网 发布:淘宝售后客服消差评 编辑:程序博客网 时间:2024/06/05 20:17
以下程序运行结果是:
class Y { public Y() { System.out.println("Y的构造方法"); } X x = new X(); { System.out.println("Y的构造代码块"); } static { System.out.println("Y类的静态代码块初始化"); } static int i = 11; static { i = 22; System.out.println("Y类的静态代码块初始化,且静态变量i的值是:" + i); }}class X { public X() { System.out.println("X的构造方法"); } { System.out.println("X的构造代码块"); } static { System.out.println("X类的静态代码块初始化"); } static int i = 1; static { i = 2; System.out.println("X类的静态代码块初始化,且静态变量i的值是:" + i); }}public class Z extends Y { public static void main(String[] args) { new Z(); } public Z() { System.out.println("Z的构造方法"); } X x = new X(); { System.out.println("Z的构造代码块"); } static { System.out.println("Z类的静态代码块初始化"); } static int i = 111; static { i = 222; System.out.println("Z类的静态代码块初始化,且静态变量i的值是:" + i); }}
输出结果:
Y类的静态代码块初始化
Y类的静态代码块初始化,且静态变量i的值是:22
Z类的静态代码块初始化
Z类的静态代码块初始化,且静态变量i的值是:222
X类的静态代码块初始化
X类的静态代码块初始化,且静态变量i的值是:2
X的构造代码块
X的构造方法
Y的构造代码块
Y的构造方法
X的构造代码块
X的构造方法
Z的构造代码块
Z的构造方法
初始化过程:
1. 初始化父类中的静态成员变量和静态代码块(静态成员变量和静态代码块两者按在类中声明的先后顺序顺序执行) ;
2. 初始化子类中的静态成员变量和静态代码块(静态成员变量和静态代码块两者按在类中声明的先后顺序顺序执行) ;
3.初始化父类的普通成员变量和代码块,再执行父类的构造方法(其中被执行的父类构造方法和子类构造方法参数数量类型一致,普通成员变量和代码块两者按在类中声明的先后顺序顺序执行),;
4.初始化子类的普通成员变量和代码块,再执行子类的构造方法(普通成员变量和代码块两者按在类中声明的先后顺序顺序执行);
转自:http://www.cnblogs.com/SaraMoring/p/5878638.html
0 0
- 类初始化顺序执行结果
- JAVA中类的初始化执行顺序
- JAVA类的初始化执行顺序探讨
- 【Java学习笔记】类初始化执行顺序
- java类初始化时执行顺序
- C#执行初始化顺序
- 对象初始化执行顺序
- Java初始化执行顺序
- Java初始化执行顺序
- 【java】静态&初始化执行顺序
- 初始化列表的执行顺序
- 对象初始化的执行顺序
- FLEX 初始化执行事件顺序
- FLEX初始化事件执行顺序
- java初始化的执行顺序
- java 初始化及执行顺序
- java初始化的执行顺序
- 测试子父类初始化执行顺序
- JAVA- DBUtil 封装数据库工具类
- 利用MoveToEx和LineTo画横线
- The Tomcat server configuration at\Servers\Tomcat v5.5 Server@ localhost-config is missing.
- 基于 OpenCV 的 LBP + SVM 人脸识别
- 记android学习之路----android传感器的使用
- 类初始化顺序执行结果
- spring Ioc的理解
- STM32F429——GPIO
- 系统开发生命周期
- 搭建私有的PyPI仓库源
- RNN求解过程推导与实现
- 数据类型(1)
- 感知神经网络模型与学习算法
- 鸟哥服务器篇——DHCP运作的原理