当前位置: 首页 > news >正文

静态初始化块与非静态初始化块

初始化块块分为静态初始化块与非静态初始化块,用 static 修饰的就是静态初始化块也称为类初始化块,没有用 static 修饰的代码块就是非静态初始化块也称为实例初始化块。

静态初始化块只会在类初始化的时候调用一次,而非静态初始化块则在每次类实例化的时候都会调用一次。

子类的第一次实例化的时候会先调用父类的静态初始化块,如果父类上面还有父类,则依次类推,最先调用的肯定是最大的父类的静态初始化块。等所有的静态代码块调用完成后,再调用父类的非静态初始化块,而后是子类的非静态初始化块。

初始化块虽然是类的成员之一,类成员有(成员变量、方法、构造器、初始化块),但它没有名字,也就没有标识,但是它并不能被类或者实例来调用,实例初始化块只在创建 JAVA 对象的隐式的执行,而且在构造器之前自动执行,而类初始化块则在类初始化的阶段自动执行。

我们通过简单的例子来说明一下

public class Animal {static {System.out.println("父类静态初始化块");}{System.out.println("父类实例初始化块");}public Animal(){System.out.println("父类构造器");}}public Dog extends Animal {static {System.out.println("子类静态初始化块");}{System.out.println("子类实例初始化块");}public Dog(){System.out.println("子类构造器");}}public class test {public static void main(String[] args) {Dog dog = new Dog();Dog dog2 = new Dog();}
}

输出结果如下:


http://www.mrgr.cn/news/82341.html

相关文章:

  • 计算机组成原理——控制单元设计
  • python +tkinter绘制彩虹和云朵
  • 检查字符是否相同
  • Cursor小试1.生成一个网页的接口请求工具
  • spring boot通过文件配置yaml里面的属性
  • Vue 3 slot/插槽继承使用方法示例(基于 Ant Design Vue)
  • 初学STM32 --- 外部SRAM
  • USB 中断传输的 PID 序列
  • golang后台框架总结
  • 【PostgreSQL】PG多实例部署
  • 算法题(23):只出现一次的数字
  • win32汇编环境,对话框中显示bmp图像文件
  • linux常用命令合集
  • 2025/1/2
  • MQ-导读
  • 设计模式 结构型 适配器模式(Adapter Pattern)与 常见技术框架应用 解析
  • Windows下使用bat实现端口映射进程守护
  • 【技术新浪潮】DeepSeek-V3:中国AI的开源巨浪,全球AI格局的破局者
  • 使用Python,networkx构造有向图及无向图以及图合并等api
  • vue设计与实现-框架设计
  • FPGA随记——过约束
  • WPF的一些控件的触发事件记录
  • 我在广州学 Mysql 系列——有关数据表的插入、更新与删除相关练习
  • 在DJI无人机上运行VINS-FUISON(PSDK 转 ROS)
  • 人脑处理信息的速度与效率:超越计算机的直观判断能力
  • win32汇编环境,窗口程序显示bmp图像文件