java继承关系中的代码执行顺序

版权声明:卢楷方的个人分享 https://blog.csdn.net/IT_lukaifang/article/details/82694196

在java程序中, 在子类继承父类时, 执行顺序是怎样的呢?

代码实现:

/**
 * super  子类通过super调用父类的成员,也可以super()调用父类构造方法   但是也是必须放在第一句
 *
 */
public class TestExtends2 {

    public static void main(String[] args) {
        new Child();

    }

}
/**
 * 父类静态代码段
 * 子类静态代码段
 * 父类代码段
 * 父类构造方法
 * 子类代码段
 * 子类构造方法
 *
 */
class Parent{
    static{
        System.out.println("父类静态代码段");
    }
    {
        System.out.println("父类代码段");
    }
    public Parent(){
        System.out.println("====父类构造方法====");
    }
}
class Child extends Parent{
    private A a = new A();
    private static A b = new A();
    static{
        System.out.println("**子类类静态代码段");
    }
    {
        System.out.println("**子类代码段");
    }
    public Child(){
        super();//调用父类构造方法    必须放在第一句
        System.out.println("**====子类类构造方法====");
    }

    public void test(){

    }
}
class A{
    public A(){
        System.out.println("****A***");
    }
}

执行结果:

这里写图片描述

可见:

 * 父类静态代码段
 * 子类静态代码段
 * 父类代码段
 * 父类构造方法
 * 子类代码段
 * 子类构造方法

猜你喜欢

转载自blog.csdn.net/IT_lukaifang/article/details/82694196