摘要: Java基本的对象初始化过程,子类的初始化,以及涉及到父类和子类的转化时可能引起混乱的情况。
基本初始化过程
对于一个简单类的初始化过程是:
static 修饰的模块(static变量和static 块) => 按照代码顺序依次执行。
↓
实例变量 及非static模块 => 按照代码顺序依次执行。
↓
构造函数 => 执行对应的构造函数。
子类的初始化过程
父类static修饰的模块
↓
子类static修饰模块
↓
父类实例变量和非static块
↓
父类对应构造函数。当子类对应构造函数中没有显示调用时调用的是父类默认的构造函数。
↓
子类实例变量和非static块
↓
子类构造函数
Debug demo1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| package code0507;
public class Demo { public static void main(String[] args) {
Sub sub = new Sub(); System.out.println(sub);
} }
class Super { int a = 6;
public Super() { test(); } int b=9;
public void test() { System.out.println(a); } }
class Sub extends Super { int a = 8;
public Sub() { test(); }
public void test() { System.out.println(a); } }
|
运行结果