在 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 行。 |
|
来自: 昵称15907169 > 《JAVA》