ithmC4 发表于 2014-4-14 14:59
有意思,想不明白,为什么会有这种结果
chen_x 发表于 2014-4-14 15:55
不考虑继承时,对象初始化的过程在视频中都有,考虑继承时,java对象的初始化过程,也可以先用代码验证一下 ...
chen_x 发表于 2014-4-14 15:55
不考虑继承时,对象初始化的过程在视频中都有,考虑继承时,java对象的初始化过程,也可以先用代码验证一下 ...
复制代码
- //验证一个有父类的java对象的初始化顺序
- class InitFu{
- public static String staticFuField = "父类静态变量";
- public String field="父类成员变量";
- public int f;
- static{
- System.out.println(staticFuField);
- System.out.println("父类静态初始化块");
- }// 静态初始化块
- {
- System.out.println("父类成员变量默认值:"+f);
- System.out.println(field);
- System.out.println("父类构造代码块");
- }// 初始化块
- InitFu(){
- System.out.println("Fu类初始化");
- }
- }
- public class InitStatic extends InitFu
- {
- public static String staticField = "子类静态变量";// 静态变量
- public String field = "子类成员变量";// 变量
- public int z;
- static{
- System.out.println(staticField);
- System.out.println("子类静态初始化块1,位置在前");
- }// 静态初始化块
- {
- System.out.println("子类成员变量还是默认值:"+z);
- System.out.println(field);
- System.out.println("子类构造代码块1,位置在前");
- }// 初始化块
- static{
- System.out.println("子类静态初始化块2,位置在后");
- }// 静态初始化块
- public InitStatic() {
- System.out.println("子类构造函数");
- }// 构造函数
- public static void main(String[] args) {
- new InitStatic();
- }
- {
- //System.out.println(field);
- System.out.println("子类构造代码块2,位置在后");
- }// 初始化块
- }
- 运行结果是:
- 父类静态变量
- 父类静态初始化块
- 子类静态变量
- 子类静态初始化块1,位置在前
- 子类静态初始化块2,位置在后
- 父类成员变量默认值:0
- 父类成员变量
- 父类构造代码块
- Fu类初始化
- 子类成员变量还是默认值:0
- 子类成员变量
- 子类构造代码块1,位置在前
- 子类构造代码块2,位置在后
- 子类构造函数
王春蕾 发表于 2014-4-14 22:34
我没啥指正,就是希望下次代码写在回复的插入代码里面,这样看着不好看 ...
王春蕾 发表于 2014-4-14 22:50
请问这个内容是在第几天的内容啊?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |