在java中,当我们new一个对象时,对象中的成员,初始化块以及构造方法的加载是有一定的顺序的,看下面一副图:

一、单类(无基类)下的初始化顺序:

public class Parent {

static String staticStr = "父类静态变量";

private String str = "父类成员变量";

static {

System.out.println(staticStr);

  System.out.println("父类静态初始化块");

}

{

System.out.println(str);

  System.out.println("父类初始化块");

}

public Parent() {

  System.out.println("父类构造");

}

public static void main(String[] args) {

  new Parent();

//new Parent();

}

}

输出:父类静态变量

父类静态初始化块

父类成员变量

父类初始化块

父类构造

/* 若放开第二行new Parent(),输出结果会增加以下内容:

父类成员变量

父类初始化块

父类构造

*/

单类顺序:  ①静态(成员,块) > 非静态(成员,块) > 构造

②成员和块的顺序取决于“他们在类中定义时的前后位置,谁靠前谁先被初始化”。

③静态成员或块是属于类的,所以优先初始化,且只会初始化一次。

④构造最后被执行。

二、继承类的初始化顺序

class SubClass extends Parent {

static String staticStr = "子类静态变量";

private String str = "子类成员变量";

static {

System.out.println(staticStr);

  System.out.println("子类静态初始化块");

}

{

System.out.println(str);

  System.out.println("子类初始化块");

}

public SubClass() {

  System.out.println("子类构造");

}

public static void main(String[] args) {

System.out.println("子类main方法");

  new SubClass();

}

}

输出:父类静态变量

父类静态初始化块

子类静态变量

子类静态初始化块

子类main方法

父类成员变量

父类初始化块

父类构造

子类成员变量

子类初始化块

子类构造

继承类顺序:

①父类静态(成员,块) > 子类静态(成员,块) > 父类非静态(成员,块) > 父类构造 > 子类非静态(成员,块)> 子类构造

②同样的,成员和块的顺序和单类中一样

③先有父才有子,但是子类的静态(成员和块)先于父类的非静态(成员和块),因为静态是属于类的;对于非静态和构造,自然是父类中全部加载完毕,再加载子类。

关注老姜谈技术,微信号:helojava,或者扫描下面二维码。


每日一帖,技术鸡汤。

最新文章

  1. struts (三)
  2. Poj 2349 Arctic Network 分类: Brush Mode 2014-07-20 09:31 93人阅读 评论(0) 收藏
  3. cmd命令积累
  4. (二)Angularjs - 入门(2)
  5. Chapter 9 原型模式
  6. NOIP2002-普及组复赛-第二题-级数求和
  7. PHP 序列化与反序列化函数
  8. css相关tips
  9. Spring第八篇【XML、注解实现事务控制】
  10. input事件中文触发多次问题研究
  11. POJ2749 Building roads
  12. 【Sichuan 2017D】Dynamic Graph
  13. jmeter操作练习
  14. Idea xml 粘贴文本保持原有格式
  15. MXNet官方文档中文版教程(3):神经网络图(Symbol)
  16. WinRAR试用过期决绝方法
  17. 机器学习(3):支持向量机(SVM)
  18. python的30个编程技巧
  19. SQL SERVER: 合并相关操作(Union,Except,Intersect)
  20. Unit04: 实战技巧 、 登录

热门文章

  1. LoadRunner函数百科叒叒叒更新了!
  2. 分享两种实现Winform程序的多语言支持的解决方案
  3. 浅谈Web自适应
  4. 【从零开始学BPM,Day4】业务集成
  5. Android—ListView条目背景为图片时,条目间距问题解决
  6. Git学习笔记一:新建本地仓库及初始化
  7. Contents Of My Blogs
  8. idea报错:error java compilation failed internal java compiler error
  9. PHP 高级编程(2/5) - 反射API
  10. Python标准模块--itertools