java中父类和子类初始化顺序
来源:互联网 发布:在线画板软件 编辑:程序博客网 时间:2024/05/22 17:38
顺序
1. 父类中静态成员变量和静态代码块
2. 子类中静态成员变量和静态代码块
3. 父类中普通成员变量和代码块,父类的构造函数
4. 子类中普通成员变量和代码块,子类的构造函数
其中“和”字两端的按照代码先后顺序执行。
举例
先看代码:
Father类
public class Father { public String fStr1 = "father1"; protected String fStr2 = "father2"; private String fStr3 = "father3"; { System.out.println("Father common block be called"); } static { System.out.println("Father static block be called"); } public Father() { System.out.println("Father constructor be called"); }}首先是Father类,该类有一个默认构造函数,有一个static的代码块,为了方便查看结果,还有一个普通代码块。
Son类
package com.zhenghuiyan.testorder;public class Son extends Father{ public String SStr1 = "Son1"; protected String SStr2 = "Son2"; private String SStr3 = "Son3"; { System.out.println("Son common block be called"); } static { System.out.println("Son static block be called"); } public Son() { System.out.println("Son constructor be called"); } public static void main(String[] args) { new Son(); System.out.println(); new Son(); }}
Son类的内容与Father类基本一致,不同在于Son继承自Father。该类有一个main函数,仅为了测试用,不影响结果。
在main函数中实例化Son。
结果为:
Father static block be calledSon static block be calledFather common block be calledFather constructor be calledSon common block be calledSon constructor be calledFather common block be calledFather constructor be calledSon common block be calledSon constructor be called
总结:
1,在类加载的时候执行父类的static代码块,并且只执行一次(因为类只加载一次);
2,执行子类的static代码块,并且只执行一次(因为类只加载一次);
3,执行父类的类成员初始化,并且是从上往下按出现顺序执行(在debug时可以看出)。
4,执行父类的构造函数;
5,执行子类的类成员初始化,并且是从上往下按出现顺序执行。
6,执行子类的构造函数。
欢迎转载,请标明出处:http://blog.csdn.net/yuxin6866/article/details/53107578
0 0
- java中父类和子类初始化顺序
- Java中父类子类初始化顺序
- [5v]Java继承中父类与子类的初始化顺序
- Java继承中父类与子类的初始化顺序
- Java继承中父类与子类的初始化顺序
- java 类及子类的初始化顺序
- Java子类父类初始化顺序
- java子类、父类、构造初始化顺序
- 继承中父类子类初始化执行顺序
- 子类对象初始化顺序
- 父类 子类 初始化顺序
- Java父类、子类、静态成员和普通成员初始化的顺序
- java类的加载顺序,父类和子类初始化的顺序和重写所遇到的上塑造型
- 黑马程序员--java中父类和子类都有构造方法时,子类对象的初始化过程
- JAVA中子类与父类对象的初始化顺序
- java实验3.(2)基类,子类的初始化顺序
- C# 子类和父类的初始化顺序
- Java继承和初始化顺序
- 基于websocket写的一个在线联机小游戏:六子冲棋
- 选择排序法
- IIC通信协议
- FFMPEG解码流程理解搜集整理及tutorial5的理解,主要是音视频同步
- Android API Level、sdk版本与发行日期 对照表
- java中父类和子类初始化顺序
- 【嵌入式】STM32的库函数使用
- 欢迎使用CSDN-markdown编辑器
- 徒手hypervisor(三)
- UML类图的几种关系和序列图总结
- 工作线程不要对界面操作
- JAVA使用FTPClient类获取linux上的文件最后修改日期少了8小时
- 采用邻接矩阵实现有向网的存储,建立有向网,并实现单源最短路径
- C#在XP系统下调用C++ dll时报找不到指定模块