首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java中构造函数的实施顺序

2012-12-28 
java中构造函数的执行顺序首先假设有如下的一些辅助类,这些类被其他类使用作为静态变量或非静态变量:publi

java中构造函数的执行顺序
首先假设有如下的一些辅助类,这些类被其他类使用作为静态变量或非静态变量:

public class A {private static E e = new E();private F f = new F();public A() {System.out.println("A");}}public class B extends A {private static D d = new D();private C c = new C();public B() {System.out.println("B");}public static void main(String[] args) {B b = new B();}}public class C {public static E e = new E();public C() {System.out.println("C");}}


执行B中的main,则会打印出如下的结果:
E
H
G
D
F
A
E
C
B

首先分析各个类的调用情况,在父类A中有一个E的静态变量,和一个F的非静态变量,B类继承自A,B有一个D的静态变量和C的非静态变量,D中又有一个H的静态变量和g的非静态变量。
从执行得到的结果可以得到如下的结论:
    1、首先执行父类中的静态变量的构造函数,在执行构造函数之前执行静态变量的类中的静态变量的构造函数。因此在上例中首先输出:E
    2、执行本类的静态变量的构造函数,同上,需要执行静态变量的类中的静态变量的构造函数。上例中会在执行了A中的E的静态变量后执行D的静态变量的构造函数,在此之前需要执行D中的静态变量H的构造函数,然后执行D中的非静态变量G的构造函数。打印出:H G D
    3、执行父类中的非静态变量的构造函数。打印出:f
    4、执行父类的构造函数。打印出: A
    5、执行本类的非静态变量的构造函数,打印出:E C
    6、执行本类中的构造函数,按照new的顺序执行构造函数。打印出:B

热点排行