黑马程序员技术交流社区

标题: 【一个程序系列】一个程序了解构造代码块和静态代码块 [打印本页]

作者: xlunaer    时间: 2015-4-14 22:35
标题: 【一个程序系列】一个程序了解构造代码块和静态代码块
  1. package com.xlunaer.alan;

  2. class Super {
  3.     Super() {
  4.         System.out.println("这是父类的构造方法");

  5.     }

  6.     {
  7.         System.out.println("这是父类的构造代码块");
  8.     }

  9.     static {
  10.         System.out.println("这是父类的静态代码块");
  11.     }

  12. }

  13. class Sub extends Super{
  14.     Sub() {
  15.         System.out.println("这是子类的构造方法");
  16.     }

  17.     {
  18.         System.out.println("这是子类的构造代码块");
  19.     }

  20.     static {
  21.         System.out.println("这是子类的静态代码块");
  22.     }
  23. }
  24. public class StaticCodeTest {

  25.     public static void main(String[] args) {

  26.        Sub b1 = new Sub();
  27.        System.out.println("----------------------------------");
  28.        Sub b2 = new Sub();
  29.     }

  30. }
复制代码


输出结果:
  1. 这是父类的静态代码块
  2. 这是子类的静态代码块
  3. 这是父类的构造代码块
  4. 这是父类的构造方法
  5. 这是子类的构造代码块
  6. 这是子类的构造方法
  7. ----------------------------------
  8. 这是父类的构造代码块
  9. 这是父类的构造方法
  10. 这是子类的构造代码块
  11. 这是子类的构造方法
复制代码


可以看出:
1.  程序加载的顺序为: 父类的静态代码块—>子类的静态代码块—>父类的构造代码块—>父类的构造方法—>子类的构造代码块—>子类的构造方法。
2. 静态代码块只执行一次,构造代码块随着对象的创建加载。
3. 所以当一段代码需要在程序运行是加载,将该代码放在静态代码块里。当一段代码需要在对象创建的时候加载,将该代码放在构造代码块里。
晚安,睡觉了,明天继续奋斗!!!
作者: woshixtdx    时间: 2015-4-14 22:37
好!!!!!!!!
作者: 牵猪散步    时间: 2015-4-14 22:46
厉害啊!学习学习!
作者: xlunaer    时间: 2015-4-15 08:28
woshixtdx 发表于 2015-4-14 22:37
好!!!!!!!!

谢谢支持!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2