类继承和初始化类的执行顺序

初始化类的执行顺序:子类初始化-》-》子类构造方法-》父类-》构造方法-》属性-》构造方法中内容-》构造方法下面的内容-》子类属性-》子类构造方法中内容

在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年

原文地址:https://www.cnblogs.com/ruiati/p/3302978.html