初始化类的执行顺序:子类初始化-》-》子类构造方法-》父类-》构造方法-》属性-》构造方法中内容-》构造方法下面的内容-》子类属性-》子类构造方法中内容
在Java编程语言中,对象的初始化是非常结构化的,这样做是为了保证安全。在前面的模块中,看到了当一个特定对象被创建时发生了什么。由于继承性,对象被完成,而且下述行为按顺序发生:
(1)存储空间被分配并初始化到0值
(2)进行显式初始化
(3)调用构造方法
(4)层次中的每个类都会发生最后两个步骤,是从最上层开始。
Java技术安全模式要求在子类执行任何东西之前,描述父类的一个对象的各个方面都必须初始化。因此,Java编程语言总是在执行子构造方法前调用父类构造方法的版本。 有继承的类在运行的时候,一定要记得:初始化子类必先初始化父类,这是Java程序的一个基本运行过程。比如:
第1行public class Test extends Parent{
第2行 private String name = "Java私塾";
第3行 private int age = 2;
第4行 public Test(){
第5行 age = 1000;//期望能到1000年,呵呵
第6行 }
第7行 public static void main(String[] args) {
第8行 Test t = new Test();
第9行 System.out.println(t.name+"的年龄是"+t.age+"年");
第10行 }
第11行}
第12行class Parent{
第13行 private int num = 1;
第14行 public Parent(){
第15行 System.out.println("现在初始化父类");
第16行 }
第17行 public void test(){
第18行 System.out.println("这是父类的test方法");
第19行 }
第20行}
上述类的基本运行顺序是: (1):先运行到第7行,这是程序的入口 (2):然后运行到第8行,这里要new一个Test,就要调用Test的构造方法 (3):就运行到第4行,注意:初始化子类必先初始化父类 (4):要先初始化父类,所以运行到第14行 (5):然后是第13行,初始化一个类,必须先初始化它的属性 (6):然后是第15行 (7):然后是第16行,表示父类初始化完成 (8):然后是回到子类,开始初始化属性,因此运行到第2行,然后是第3行 (9):子类属性初始化完过后,才回到子类的构造方法,执行里面的代码,也就是第5行 (10):然后是第6行,表示new一个Test实例完成 (11):然后回到main方法中执行第9行 (12):然后是第10行 运行结果是: 现在初始化父类 Java私塾的年龄是1000年