存在继承关系时的输出顺序
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
执行顺序:父类静态代码块–>子类静态代码块–>父类代码块–>父类构造–>子类代码块–>子类构造(同样的是先执行静态代码块,并且只打印一次,此后都以父类代码块–>父类构造–>子类代码块–>子类构造顺序执行)
分类:
Java学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)