java 构造函数初始化全过程以及顺序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java 构造函数初始化全过程以及顺序

public class Test1 {

public static int k=0;

public static Test1 t1=new Test1("t1");

public static Test1 t2=new Test1("t2");

public static int i=print("i");

public static int n=99;

public int j=print("j");

{

print("构造块");

}

static {

print("静态快");

}

public Test1(String str){

System.out.println((++k)+":"+str+" i="+i+" n="+n);

++n;++i;

}

public static int print(String str){

System.out.println((++k)+":"+str+" i="+i+" n="+n);

++n;

return ++i;

}

public static void main(String[] args) {

Test1 t=new Test1("init");

}

}

1:j i=0 n=0

2:构造块i=1 n=1

3:t1 i=2 n=2

4:j i=3 n=3

5:构造块i=4 n=4

6:t2 i=5 n=5

7:i i=6 n=6

8:静态快i=7 n=99

9:j i=8 n=100

10:构造块i=9 n=101

11:init i=10 n=102

从运行结果可以看出,先进行类的静态初始化,包括静态块和静态变量,谁在前谁就先初始化,然后则是构造函数本身,这同时也包含两个部分:构造快和成员变量,顺序由出现的顺序决定,谁先出现谁先执行,然后才是构造函数体本身。类的继承知识点(1)java不支持多重继承,也就是说子类至多只能有一个父类(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承(4)子类中定义的成员方法,并且这个成员方法的名字,返回类型,及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。

public abstract class A { int i=1; public void printI() { System.out.println("i="+i); } } public class B extneds A{ int i=2; public static void

main(String[] args) { B b=new B();

b.printI(); } }

正确结果1

相关文档
最新文档