今天总结了一下子父类当中含有静态代码块、代码块、构造函数、成员变量、子类复写父类方法时子类的初始化过程,把思路理清一下

  1. class Fu
  2. {
  3. //父类成员变量
  4. private int num = 3;
  5. //静态代码块,随着类的加载而加载
  6. static{
  7. System.out.println("父类静态代码块");
  8. }
  9. //代码块,运行于构造函数之前,成员变量显示初始化之后
  10. {
  11. System.out.println("父类代码块,num = "+num);
  12. }
  13. //构造函数,先去找他爸爸,运行完父类再运行子类
  14. Fu(){
  15. super();//此处去找Object,可忽略
  16. System.out.println("父类构造函数,num = "+num);
  17. //此处调用的是子类的show方法,因为被覆盖了,注意子类覆盖父类方法时,返回值也得一样
  18. show();
  19. }
  20. public void show()
  21. {
  22. System.out.println("父类show方法,num = "+num);
  23. }
  24. }
  25. class Demo extends Fu
  26. {
  27. private int age =23;
  28. //静态代码块,他有直接父类时,先去加载直接父类
  29. static{
  30. System.out.println("子类静态代码块");
  31. }
  32. //构造代码块,当有直接父类时,当父类运行完毕才轮到构造代码块
  33. {
  34. System.out.println("子类代码块,age = "+age);
  35. }
  36. Demo()
  37. {
  38. System.out.println("子类构造函数,age = "+age);
  39. show();
  40. }
  41. public void show()
  42. {
  43. System.out.println("子类show方法,age = "+age);
  44. }
  45. public static void main(String[] args)throws IOException
  46. {
  47. new Demo();
  48. }
  49. /*
  50. *         父类静态代码块
  51. 子类静态代码块
  52. 父类代码块,num = 3
  53. 父类构造函数,num = 3
  54. 子类show方法,age = 0
  55. 子类代码块,age = 23
  56. 子类构造函数,age = 23
  57. 子类show方法,age = 23
  58. * */
  59. }

总结一下:
1.父类字节码先被JVM加载,父类静态代码块先运行。
2.子类字节码被加载,子类静态代码块运行。
3.子类构造函数进栈,子类的成员变量默认初始化
4.super启动,父类构造函数进栈,父类成员变量默认初始化(super-->Object,可忽略)
5.父类成员变量显示初始化
6.父类构造代码块加载
7.父类构造函数运行。
8.子类成员变量显示初始化
9.子类构造代码块运行。
10.子类构造函数运行

最新文章

  1. C/C++的基本数据类型
  2. Daikon Forge GUI Library(dfgui)之Event Binding
  3. PHP eof的使用
  4. 锋利的jQuery-7--$.extend()
  5. int和char的相同和不同。
  6. 20160127 linux 学习笔记
  7. Linux04--文本编辑器vim
  8. redis数据库安装及简单的增删改查
  9. pip install在Windows下报错解决
  10. [TJOI 2013]单词
  11. MVC Scaffolding SmartCode-Engine 更新
  12. Redhat安装Oracle 11g (转)
  13. Day05 (黑客成长日记) 文件操作系列
  14. ASP.NET 配置log4net启用写错误日志功能
  15. MacOS下安装小米SQL优化工具soar
  16. POJ 3122 Pie【二分答案】
  17. VMware虚拟机屏幕大小只有400,800怎么办如何解决
  18. unity-----------------------四元数与欧拉旋转方法
  19. CentOS 7 下编译安装lnmp之MySQL篇详解
  20. 第四章 Spring.Net 如何管理您的类___对象、对象工厂和应用程序上下文

热门文章

  1. oracle获取字符串长度函数length()和lengthb()
  2. 【转载】HTTP协议与WEB本质
  3. Android反复闹钟(每天)的实现
  4. NS3网络仿真(9): 构建以太网帧
  5. 卸载ubuntu自带openJDK,更改成自己的JDK版本
  6. method.invoke()使用
  7. HDU1269 迷宫城堡 —— 强连通分量
  8. [SCOI 2007] 修车
  9. 【转】Echarts的使用以及动态加载数据
  10. VS2012上添加SharePoint2013模板,SharePoint2013 Tool安装配置