类继承和初始化类的执行顺序
来源:互联网 发布:知乎2017校园招聘 编辑:程序博客网 时间:2024/05/22 07:49
初始化类的执行顺序:子类初始化-》-》子类构造方法-》父类-》构造方法-》属性-》构造方法中内容-》构造方法下面的内容-》子类属性-》子类构造方法中内容
在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年
本文转载自:http://www.cnblogs.com/ruiati/archive/2013/09/05/3302978.html
- 类继承和初始化类的执行顺序
- 继承关系的类初始化和实例化的顺序
- 继承关系的类初始化和实例化的顺序
- 继承关系的类初始化和实例化的顺序
- 继承类各成员和方法的初始化顺序_05
- java继承时初始化的执行顺序
- 类的继承,初始化后运行顺序
- Java中类继承的初始化顺序
- Java继承类的初始化先后顺序
- 继承中类的 初始化顺序
- 基类,继承类的初始化顺序
- JAVA中类的初始化执行顺序
- JAVA类的初始化执行顺序探讨
- java类的初始化顺序及继承顺序
- 继承中类初始化顺序
- 继承时候类的执行顺序问题
- 继承各种类的执行顺序
- Java类继承的执行顺序
- JMS简介(一)
- 算法库algorithm-9-string
- CUDA 学习(三)、CUDA硬件概述
- 常见的用户密码加密方式以及破解方法
- 【个人博客地址】
- 类继承和初始化类的执行顺序
- UEditor之图片上传如何和真实项目结合
- Android的打包过程
- Canada Cup 2016 D. Contest Balloons (贪心 + 优先队列)
- 动态设置listView的高度
- 3DMax Y Up 和 Z UP 的区别
- Vim常用命令,linux编程事半功倍
- multiple definition of 'JNI_OnLoad'
- Unreal Engine 4 C++ FString操作的几种方式