类初始化详细过程!
来源:互联网 发布:内饰 防御机制 知乎 编辑:程序博客网 时间:2024/04/30 07:26
package zhao;
public class TestClass extends BaseClass {
static{
System.out.println("我输出的是 子类静态块内容→"+TestClass.name);//第四步
}
{
System.out.println("我输出的是 子类非静态块内容→"+this.code);//第十三步
}
static String name = "子类静态变量";//第五步
String code ="子类非静态变量初始化";//第十四步
TestClass(){
code = "子类构造方法里该修了的 code 的值";//第十六步
System.out.println("我输出的是 子类构造体→"+code);//第十七步
}
static{
System.out.println("我输出的是 子类静态块内容→"+name);//第六步
}
{
System.out.println("我输出的是 子类非静态块内容→"+code);//第十五步
}
/** *//**
* @param args
*/
public static void main(String[] args) {
new TestClass();
}
static{
System.out.println("我输出的是 子类静态块内容→"+TestClass.name);//第四步
}
{
System.out.println("我输出的是 子类非静态块内容→"+this.code);//第十三步
}
static String name = "子类静态变量";//第五步
String code ="子类非静态变量初始化";//第十四步
TestClass(){
code = "子类构造方法里该修了的 code 的值";//第十六步
System.out.println("我输出的是 子类构造体→"+code);//第十七步
}
static{
System.out.println("我输出的是 子类静态块内容→"+name);//第六步
}
{
System.out.println("我输出的是 子类非静态块内容→"+code);//第十五步
}
/** *//**
* @param args
*/
public static void main(String[] args) {
new TestClass();
}
}
class BaseClass{
static {
System.out.println("我输出的是 父类静态块内容→"+BaseClass.basename);//第一步,因为basename先初始化默认值!所以为null
}
{
System.out.println("我输出的是 父类非静态块内容→"+this.basecode);//第七步,因为basecode先初始化默认值!所以为null
}
static String basename = "父类静态变量"; //第二步
String basecode ="父类非静态变量初始化";//第八步
BaseClass(){
basecode = "父类构造方法里该修了的 basecode 的值";//第十一步
System.out.println("我输出的是 父类构造体→"+basecode);//第十二步
}
static {
System.out.println("我输出的是 父类静态块内容→"+basename);//第三步
}
{
System.out.println("我输出的是 父类非静态块内容→"+basecode);//第九步
}
}
class BaseClass{
static {
System.out.println("我输出的是 父类静态块内容→"+BaseClass.basename);//第一步,因为basename先初始化默认值!所以为null
}
{
System.out.println("我输出的是 父类非静态块内容→"+this.basecode);//第七步,因为basecode先初始化默认值!所以为null
}
static String basename = "父类静态变量"; //第二步
String basecode ="父类非静态变量初始化";//第八步
BaseClass(){
basecode = "父类构造方法里该修了的 basecode 的值";//第十一步
System.out.println("我输出的是 父类构造体→"+basecode);//第十二步
}
static {
System.out.println("我输出的是 父类静态块内容→"+basename);//第三步
}
{
System.out.println("我输出的是 父类非静态块内容→"+basecode);//第九步
}
}
1:父类静态变量的默认初始化
2.父类静态变量初始化,父类静态块代码(静态变量和静态块代码中,哪个在前面就先执行哪个)
3:子类静态变量的默认初始化
4.子类静态变量,子类静态块代码(静态变量和静态块代码中,哪个在前面就先执行哪个)
5:父类非静态变量的默认初始化
6:父类非静态变量,父类非静态块代码(非静态变量和非静态块代码中,哪个在前面就先执行哪个)
7.父类构造体
8.子类非静态变量的默认初始化
9.子类非静态变量,子类非静态块代码(非静态变量和非静态块代码中,哪个在前面就先执行哪个)
10:子类构造体
经常有人问初始化的顺序,我在这里详细的说明了,看帖一定要回帖哦!
- 类初始化详细过程!
- MFC 初始化详细过程
- Spring 初始化过程详细分析[源码](一)
- Spring 初始化过程详细分析 [源码] (二)
- 初始化Java对象的详细过程
- 类/对象初始化过程:
- JAVA类初始化过程
- java类初始化过程
- Java类初始化过程
- 类的初始化过程
- java类初始化过程
- Java类初始化过程
- Java类初始化过程
- 类的初始化过程
- 类初始化过程详解
- 类的加载、连接与初始化过程的详细分析(上)
- 类的加载、连接与初始化过程的详细分析(中)
- 类的加载、连接与初始化过程的详细分析(下)
- 多线程学习笔记(一)
- 学习指针不可少的好文章(转载)
- 操作MYSQL的完美解决方案
- SQL Server 2005 常用配置
- Oracle 9i windows上的安装提示Temp空间不足
- 类初始化详细过程!
- emacs中显示行号
- 常用正则表达式
- [转载] S3C4510上嵌入式Web服务器-boa在uclinux下的的移植
- 我的主页
- Oracle编程高手箴言:位图索引(Bitmap Index)的故事
- Java中String类型的参数传递问题的解析
- java 文件操作
- Java中this的使用