Java中对象的初始化生成过程
来源:互联网 发布:欧美直播软件 编辑:程序博客网 时间:2024/05/17 05:00
Java是面向对象的一种语言,在Java对象生成的过程,涉及子类和父类的加载、静态成员变量的初始化、子类和父类对象的初始化等过程,其具体过程通过下述代码来说明。
- class A
- {
- public A(String s)
- {
- System.out.println(s+" Constructor A");
- }
- }
- class B
- {
- public B(String s)
- {
- System.out.println(s+ " Constructor B");
- }
- }
- class C
- {
- public C(String s)
- {
- System.out.println(s+ " Constructor C");
- }
- }
- class Base
- {
- static A a1 = new A("a1: static");
- A a2 = new A("a2: normal");
- public Base()
- {
- A a3 = new A("a3: normal");
- System.out.println("Constructor Base");
- }
- }
- class Derived extends Base
- {
- static B b1 = new B("b1: static");
- B b2 = new B("b2: normal");
- public Derived()
- {
- B b3 = new B("b3: normal");
- System.out.println("Constructor Derived");
- }
- }
- public class Test {
- static C c1 = new C("c1: static");
- C c2 = new C("c2: normal");
- public static void main(String[] args) {
- C c3 = new C("c3: normal");
- Derived derived = new Derived();
- System.out.println("end");
- }
- }
该段代码的执行结果为:
c1: static Constructor C
c3: normal Constructor C
a1: static Constructor A
b1: static Constructor B
a2: normal Constructor A
a3: normal Constructor A
Constructor Base
b2: normal Constructor B
b3: normal Constructor B
Constructor Derived
end
对上述执行结果进行分析,其生成过程为:
1)程序执行时,首先加载main函数所在的类Test,由于Test类包含静态成员变量c1,因此对该变量进行初始化,调用其构造函数。
2)由于c2是Test类的对象成员变量,且此处并没有初始化Test类对象,因此不需要初始化c2。
3)执行main函数。
4) main函数声明且初始化变量c3,因此调用其构造函数。
5)main函数声明且初始化变量derived,此过程可具体划分为以下步骤:
a) 加载Derived类,由于其继承自Base类,因此还需加载Base类。
b) 类加载完成后,由父类至子类,先后完成其中静态成员变量的初始化,因此先后调用a1,b1的构造函数。
c) 静态成员变量初始化后,由父类至子类,先后完成类对象的初始化。在类对象的初始化过程中,首先初始化对象成员变量,再调用构造函数。因此,在Base类,首先调用a2的构造函数,再调用Base的构造函数,在构造函数中,调用a3的构造函数;而在Derived类,首先调用b2的构造函数,再调用Derived的构造函数,在构造函数中,调用b3的构造函数。
6) 综上,完成了整个对象的初始化生成过程和程序运行。
- Java中对象的初始化生成过程
- java中对象的初始化过程
- java中一个对象的初始化过程
- Java中对象的初始化过程
- Java中子类对象初始化的过程
- Java中对象的初始化过程详解
- java面向对象中对象的初始化过程
- JAVA对象的初始化过程
- java对象的初始化过程
- JAVA 的对象初始化过程
- JAVA 对象的初始化过程
- JAVA对象的初始化过程
- Java对象初始化的过程
- 对象的初始化过程-java
- Java - 对象的初始化过程
- Java: 对象的初始化过程
- Java 对象的初始化过程
- 深入研究Java中一个对象的初始化过程
- Linux文件系统详解
- jQuery提示输入逻辑
- mount命令的使用
- VS2005: cannot load the project due to a corrupt project file
- HTML5 Web SQL Database 与 Indexed Database 的 CRUD 操作
- Java中对象的初始化生成过程
- Qt-Function-QWebFrame->load()_05
- 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
- C++静态成员函数小结
- 打开并编辑ubuntu的root.disk文件,WinHex使用方法
- 从陌生到熟悉,再变成最熟悉的陌生人:伤感日志
- 配置多SessionFactory
- IOS 点滴技巧
- spring -quartz配置详解