Java类的加载和对象创建流程的详细分析

时间:2022-10-15 02:58:51

相信我们在面试Java的时候总会有一些公司要做笔试题目的,而Java类的加载和对象创建流程的知识点也是常见的题目之一。接下来通过实例详细的分析一下:

package com.test;

public class Parent {

    int a = 10;
static int b =11;
//静态代码块
static {
System.out.println("parent静态代码块:b=" + b);
b++;
}
//代码块
{
System.out.println("Parent代码块:a=" + a);
System.out.println("Parent代码块:b=" + b);
b++;
a++;
}
//无参构造函数
Parent(){
System.out.println("Parent无参构造函数:a=" + a);
System.out.println("Parent无参构造函数:b=" + b);
}
//有参构造函数
Parent(int a){
System.out.println("Parent有参构造函数:a=" + a);
System.out.println("Parent有参构造函数:b=" + b);
}
//方法
void function(){
System.out.println("Parent function run ......");
}
}
package com.test;

public class Child extends Parent {

    int x = 10;
static int y = 11;
//静态代码块
static {
System.out.println("Child静态代码块:y=" + y);
y++;
}
//代码块
{
System.out.println("Child代码块:x=" + x);
System.out.println("Child代码块:y=" + y);
y++;
x++;
}
//构造函数
Child(){
System.out.println("Child无参构造函数:x" + x);
System.out.println("Child无参构造函数:y=" + y);
}
//方法
void function(){
System.out.println("Child function run ......");
} }
package com.test;

public class testPC {
public static void main(String[] args) { Child demo = new Child();
demo.function();
System.out.println("............................................................");
/* Child child = new Child();
child.function();*/
}
} 结果:

parent静态代码块:b=11
Child静态代码块:y=11
Parent代码块:a=10
Parent代码块:b=12
Parent无参构造函数:a=11
Parent无参构造函数:b=13
Child代码块:x=10
Child代码块:y=12
Child无参构造函数:x11
Child无参构造函数:y=13
Child function run ......
............................................................
Parent代码块:a=10
Parent代码块:b=13
Parent无参构造函数:a=11
Parent无参构造函数:b=14
Child代码块:x=10
Child代码块:y=13
Child无参构造函数:x11
Child无参构造函数:y=14
Child function run ......