- package com.xlunaer.alan;
- class Super {
- Super() {
- System.out.println("这是父类的构造方法");
- }
- {
- System.out.println("这是父类的构造代码块");
- }
- static {
- System.out.println("这是父类的静态代码块");
- }
- }
- class Sub extends Super{
- Sub() {
- System.out.println("这是子类的构造方法");
- }
- {
- System.out.println("这是子类的构造代码块");
- }
- static {
- System.out.println("这是子类的静态代码块");
- }
- }
- public class StaticCodeTest {
- public static void main(String[] args) {
- Sub b1 = new Sub();
- System.out.println("----------------------------------");
- Sub b2 = new Sub();
- }
- }
复制代码
输出结果:
- 这是父类的静态代码块
- 这是子类的静态代码块
- 这是父类的构造代码块
- 这是父类的构造方法
- 这是子类的构造代码块
- 这是子类的构造方法
- ----------------------------------
- 这是父类的构造代码块
- 这是父类的构造方法
- 这是子类的构造代码块
- 这是子类的构造方法
复制代码
可以看出:
1. 程序加载的顺序为: 父类的静态代码块—>子类的静态代码块—>父类的构造代码块—>父类的构造方法—>子类的构造代码块—>子类的构造方法。
2. 静态代码块只执行一次,构造代码块随着对象的创建加载。
3. 所以当一段代码需要在程序运行是加载,将该代码放在静态代码块里。当一段代码需要在对象创建的时候加载,将该代码放在构造代码块里。
晚安,睡觉了,明天继续奋斗!!! |
|