黑马程序员技术交流社区
标题:
子父类成员以及函数初始化顺序总结!
[打印本页]
作者:
jojo
时间:
2015-1-14 21:34
标题:
子父类成员以及函数初始化顺序总结!
package com.bocsoft.study;
/**
*
* @author jojo
* 时间:2015-1-14
*/
public class InialTest {
public static void main(String[] args) {
Son s = new Son();
}
}
class Father {
private Info info1 = new Info("父类非静态变量初始化");
private static Info info2 = new Info("父类静态变量初始化");
Father(){
System.out.println("父类构造函数执行");
}
static{
Info info3 = new Info("父类静态代码块执行");
}
{
Info info4 = new Info("父类构造代码块执行");
}
}
class Son extends Father{
private Info info1 = new Info("子类非静态变量初始化");
private static Info info2 = new Info("子类静态变量初始化");
Son(){
System.out.println("子类构造函数执行");
}
static{
Info info3 = new Info("子类静态代码块执行");
}
{
Info info4 = new Info("子类构造代码块执行");
}
}
class Info {
Info(String message){
System.out.println(message);
}
}
复制代码
好了,废话不多说,一个程序就能说明所有初始化顺序的问题了,送给需要的朋友了。代码可以直接copy,然后运行。
需要注意的是,子类成员初始化是在父类构造函数执行之后,子类构造函数执行之前,相信不少人会忽略这一问题。
程序运行的结果如下:
父类静态变量初始化
父类静态代码块执行
子类静态变量初始化
子类静态代码块执行
父类非静态变量初始化
父类构造代码块执行
父类构造函数执行
子类非静态变量初始化
子类构造代码块执行
子类构造函数执行
作者:
'丫头片子'
时间:
2015-1-14 21:51
测试到位,不错
作者:
李一白_
时间:
2015-1-14 21:59
多谢分享
作者:
IcedCoffee
时间:
2015-1-14 22:10
细看程序 不叫好 只是偷偷记
作者:
jinghoujiayin
时间:
2015-1-14 23:09
刚学这个,然后来巩固下,不错不错
作者:
jojo
时间:
2015-1-15 20:52
嘿嘿,自己给自己顶一个!
作者:
yumin
时间:
2015-1-17 18:55
不多,顶起
作者:
资博仁
时间:
2015-1-17 19:15
非常感谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2