在Java编程语言中,对象的初始化是非常结构化的,这样做是为了保证安全。在前面的模块中,看到了当一个特定对象被创建时发生了什么。由于继承性,对象被完成,而且下述行为按顺序发生:

  存储空间被分配并初始化到0值

  进行显式初始化

  调用构造方法

  层次中的每个类都会发生最后两个步骤,是从最上层开始。

  Java技术安全模式要求在子类执行任何东西之前,描述父类的一个对象的各个方面都必须初始化。因此,Java编程语言总是在执行子构造方法前调用父类构造方法的版本。有继承的类在运行的时候,一定要记得:初始化子类必先初始化父类,这是Java程序的一个基本运行过程。比如:

  1.public class Test extends Parent{

  2.private String name;

  3.private int age;

  4.public Test(){

  5.name="Tom";

  6.age=20;

  7.}

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

  9.Test t=new Test();

  10.System.out.println(t.name+"的年龄是"+t.age);

  11.}

  12.}

  13.class Parent{

  14.private int num=1;

  15.public Parent(){

  16.System.out.println("现在初始化父类");

  17.}

  18.public void test(){

  19.System.out.println("这是父类的test方法");

  20.}

  21.}

  上述类的基本运行顺序是:

  先运行到第8行,这是程序的入口。

  然后运行到第9行,这里要new一个Test,就要调用Test的构造方法。

  就运行到第4行,注意:初始化子类必先初始化父类。

  要先初始化父类,所以运行到第15行。

  然后是第14行,初始化一个类,必须先初始化它的属性。

  然后是第16行。

  然后是第17行,表示父类初始化完成。

  然后是回到子类,开始初始化属性,因此运行到第2行,然后是第3行。

  子类属性初始化完过后,才回到子类的构造方法,执行里面的代码,也就是第5、6行。

  然后是第7行,表示new一个Test实例完成。

  然后回到main方法中执行第10行。

  然后是第11行。

  更多技术教程,请关注技术教程网www.jishujc.com