随笔 - 38  文章 - 0  评论 - 0  阅读 - 6165

存在继承关系时的输出顺序

package com.zhang;

public class B extends A{
    //子类的静态代码块
    static{
        System.out.println("子类的静态代码块执行了");
    }

    {
        System.out.println("子类的代码块执行了");
    }

    //子类的构造函数
    public B(){
        super();
        System.out.println("子类的构造函数执行了");
    }
    //子类重载的构造函数
    public B(String name){
        System.out.println("子类重载的构造函数执行了"+name);
    }
}
class A {
    //父类静态代码块
    static {
        System.out.println("父类静态代码块执行了");
    }
    {
        System.out.println("父类的代码块执行了");
    }
    //父类构造函数
    public A(){
        System.out.println("父类构造函数执行了");
    }
}
class Test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        B b=new B();
        System.out.println("=============");
        B b1=new B("name1");
        System.out.println("=============");
        B b3=new B();
        System.out.println("=============");
        B b2=new B("name2");


    }
}

执行结果
父类静态代码块执行了
子类的静态代码块执行了
父类的代码块执行了
父类构造函数执行了
子类的代码块执行了
子类的构造函数执行了
=============
父类的代码块执行了
父类构造函数执行了
子类的代码块执行了
子类重载的构造函数执行了name1
=============
父类的代码块执行了
父类构造函数执行了
子类的代码块执行了
子类的构造函数执行了
=============
父类的代码块执行了
父类构造函数执行了
子类的代码块执行了
子类重载的构造函数执行了name2
执行顺序:父类静态代码块–>子类静态代码块–>父类代码块–>父类构造–>子类代码块–>子类构造(同样的是先执行静态代码块,并且只打印一次,此后都以父类代码块–>父类构造–>子类代码块–>子类构造顺序执行)

posted on   懵逼的程序小白  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示