分享

初始化顺序之解读继承中的父类与子类...

 昵称15907169 2014-07-01
在 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 行。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多