Java 类的初始化的顺序
来源:互联网 发布:福建师范大学网络教育 编辑:程序博客网 时间:2024/06/06 10:50
《JAVA解惑》的解惑40中提到JAVA中的实例变量的初始化操作优先与构造器的程序体而运行。这一点与C++有天大的区别。
我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态
变量、静态初始化块)>(变量、初始化块)>构造器。
继承体系中一般的顺序为:父类的(静态变量、静态初始化块)>子类的(静态变量、静态初始化块)>父类的(变量、初始化块)>父类构造器>子类的(变量、初始化块)>子类构造器。
public class Test1 { //静态变量public static String staticField = "静态变量"; // 变量public String field = "变量"; // 静态初始化块static {System.out.println(staticField);System.out.println("静态初始化块");}// 初始化块{System.out.println(field); System.out.println("初始化块");}// 构造器public Test1() {System.out.println("构造器");} public static void main(String[] args) { new Test1(); } }
class Parent { // 静态变量public static String p_StaticField = "父类--静态变量"; //变量public String p_Field = "父类--变量"; // 静态初始化块static { System.out.println(p_StaticField); System.out.println("父类--静态初始化块"); } //{ System.out.println(p_Field); System.out.println("父类--初始化块"); } //构造器public Parent() { System.out.println("父类--构造器"); } } public class SubClass extends Parent { //静态变量public static String s_StaticField = "子类--静态变量"; // 变量public String s_Field = "子类--变量"; // 静态初始化块static { System.out.println(s_StaticField); System.out.println("子类--静态初始化块"); } //初始化块{ System.out.println(s_Field); System.out.println("子类--初始化块"); } // 构造器public SubClass() { System.out.println("子类--构造器"); } // 程序入口public static void main(String[] args) { new SubClass(); } }
- java类的初始化顺序
- Java类的初始化顺序
- Java类的初始化顺序
- Java类的初始化顺序
- Java类的初始化顺序
- java类初始化的顺序
- java类的初始化顺序
- Java类的初始化顺序
- java 类的初始化顺序
- Java类的初始化顺序
- java类的初始化顺序
- java类的初始化顺序
- JAVA类的初始化顺序
- Java类的初始化顺序
- java类的初始化顺序
- java 类的初始化 顺序
- java类的初始化顺序
- java类的初始化顺序
- 路在脚下
- Android模拟器emulator基本使用技巧和命令
- 我的SIP开发之路
- C# 只允许运行一个实例
- 网盘功能
- Java 类的初始化的顺序
- 如何管理下级的绩效
- poj2749 2-SAT判定
- 教你如何背单词
- Cloud Foundry 杂七杂八
- web_reg_save_param 左右边界中有双引号,正确写法
- linux串口编程详解
- 第五章 函数 --函数的默认参数问题
- poj3468