A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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. 所以当一段代码需要在程序运行是加载,将该代码放在静态代码块里。当一段代码需要在对象创建的时候加载,将该代码放在构造代码块里。
晚安,睡觉了,明天继续奋斗!!!

3 个回复

倒序浏览
好!!!!!!!!
回复 使用道具 举报
厉害啊!学习学习!
回复 使用道具 举报
woshixtdx 发表于 2015-4-14 22:37
好!!!!!!!!

谢谢支持!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马