Java父类、子类实例初始化顺序详解

1、完整的初始化顺序(含继承)

1、父类的静态初始化

父类静态变量默认值 → 父类静态变量显式赋值 + 父类静态代码块(按代码顺序执行)。

2、子类的静态初始化

子类静态变量默认值 → 子类静态变量显式赋值 + 子类静态代码块(按代码顺序执行)。

3、父类的实例初始化

父类实例变量默认值 → 父类实例变量显式赋值 + 父类实例代码块(按代码顺序执行)→ 父类构造函数。

4、子类的实例初始化

子类实例变量默认值 → 子类实例变量显式赋值 + 子类实例代码块(按代码顺序执行)→ 子类构造函数。

2、代码示例

class Parent {// 父类静态变量private static String parentStaticField = initParentStaticField();// 父类静态代码块static {System.out.println("父类静态代码块执行");}// 父类实例变量private String parentInstanceField = initParentInstanceField();// 父类实例代码块{System.out.println("父类实例代码块执行");}// 父类构造函数public Parent() {System.out.println("父类构造函数执行");}// 父类初始化方法private static String initParentStaticField() {System.out.println("父类静态变量赋值");return "parentStatic";}private String initParentInstanceField() {System.out.println("父类实例变量赋值");return "parentInstance";}
}public class Test extends Parent {// 子类静态变量private static String staticField = initStaticField();// 子类静态代码块static {System.out.println("子类静态代码块执行");}// 子类实例变量private String instanceField = initInstanceField();// 子类实例代码块{System.out.println("子类实例代码块执行");}// 子类构造函数public Test() {System.out.println("子类构造函数执行");}// 子类初始化方法private static String initStaticField() {System.out.println("子类静态变量赋值");return "static";}private String initInstanceField() {System.out.println("子类实例变量赋值");return "instance";}public static void main(String[] args) {new Test();}
}

执行结果:

父类静态变量赋值       // 父类静态初始化开始
父类静态代码块执行     // 父类静态初始化完成
子类静态变量赋值       // 子类静态初始化开始
子类静态代码块执行     // 子类静态初始化完成
父类实例变量赋值       // 父类实例初始化开始
父类实例代码块执行     
父类构造函数执行       // 父类实例初始化完成
子类实例变量赋值       // 子类实例初始化开始
子类实例代码块执行     
子类构造函数执行       // 子类实例初始化完成

分析:
可知通过继承时候,当加载子类时候会优先加载父类,等父类全部加载完毕才会进行子类的加载,静态变量特殊,如果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

13.组合模式:思考与解读

原文地址:组合模式:思考与解读 更多内容请关注:7.深入思考与解读设计模式 引言 在软件开发中,是否曾经遇到过这样一种情况:你有一个对象,它本身很简单,但是它包含了其他类似的对象。随着系统变得越来越复…

OpenCV实战教程 第一部分:基础入门

第一部分:基础入门 1. OpenCV简介 什么是OpenCV及其应用领域 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,于1999年由Intel公司发起,现在由非营利组织OpenCV.org维护。Ope…

虚幻商城 Quixel 免费资产自动化入库(2025年版)

文章目录 一、背景二、问题讲解1. Quixel 免费资产是否还能一键入库?2. 是不是使用了一键入库功能 Quixel 的所有资产就能入库了?3. 一键入库会入库哪些资产?三、实现效果展示四、实现自动化入库五、常见问题1. 出现401报错2. 出现429报错3. 入库过于缓慢4. 入库 0 个资产一…

uni-app - 小程序使用高德地图完整版

文章目录 🍉功能描述🍉效果🍉开发环境🍉代码部分🍉功能描述 页面自动通过定位获取用户位置并展示周边POI数据,同时支持关键词输入实时联想推荐关联地点信息, 实现精准智能的地点发现与检索功能。 🍉效果 🍉开发环境 unibest2.5.4nodev18.20.5pnpm9.14.2wot-des…

牛客:AB4 逆波兰表达式求值

链接:逆波兰表达式求值_牛客题霸_牛客网 题解: 利用栈,遍历字符串数组,遇到运算数则入栈,遇到运算符则取出栈顶两个运算数进行运算,并将运算结果入栈。 class Solution { public:/*** 代码中的类名、方法…

Ant(Ubuntu 18.04.6 LTS)安装笔记

一、前言 本文与【MySQL 8(Ubuntu 18.04.6 LTS)安装笔记】同批次:先搭建数据库,再安装JDK,后面肯定就是部署Web应用。其中Web应用的部署使用 Ant 方式,善始善终,特以笔记。 二、准备 &#xf…

ultralytics 目标检测 混淆矩阵 背景图像 没被记录

修改 utils/metrics.py ConfusionMatrix def process_batch(self, detections, gt_bboxes, gt_cls):"""Update confusion matrix for object detection task.Args:detections (Array[N, 6] | Array[N, 7]): Detected bounding boxes and their associated inf…

iview 如何设置sider宽度

iview layout组件中,sider设置了默认宽度和最大宽度,在css样式文件中修改无效,原因是iview默认样式设置在了element.style中,只能通过行内样式修改 样式如下: image.png image.png 修改方式: 1.官方文档中写…

go-zero(十七)结合DTM :实现分布式事务

1. 基础概念介绍 1.1 什么是分布式事务 在微服务架构中,一个业务操作常常需要调用多个服务来完成。例如,在电商系统中下单时,需要同时操作订单服务和库存服务。这种跨服务的操作就需要分布式事务来保证数据一致性。 分布式事务面临以下挑战…

2025 简易Scrum指南(简体中文版)

Scrum是一个轻量级的、以团队为中心的框架,用于解决复杂的问题并创造价值。Scrum有意保持非完整性,Scrum的设计初衷旨在依靠使用者的集体智慧来不断演进构建。 Scrum建立在实验主义和精益思想的基础上,它赋能团队灵活巧妙地工作,…

2025最新福昕PDF编辑器,PDF万能处理工具

软件介绍 Foxit PDF Editor Pro 2025 中文特别版(以前称为 Foxit PhantomPDF Business)是一款专为满足各种办公需求而设计的业务就绪的PDF工具包。 软件特点 1. 强大的PDF编辑能力 创建新文档:用户可以从无到有地构建PDF文档,添…

ollama的若干实践

1. 本地ollama 1.1 本地安装ollama 方法 1:手动检查最新版本并下载 访问 Ollama 的 GitHub Releases 页面: 打开 https://github.com/ollama/ollama/releases 查看最新的稳定版本(如 v0.7.0 或更高) 手动下载最新版本&#xff08…

Spring Security源码解析

秒懂SpringBoot之全网最易懂的Spring Security教程 SpringBoot整合Spring-Security 认证篇(保姆级教程) SpringBoot整合Spring Security【超详细教程】 spring security 超详细使用教程(接入springboot、前后端分离) Security 自…

LeetCode 3392.统计符合条件长度为 3 的子数组数目:一次遍历模拟

【LetMeFly】3392.统计符合条件长度为 3 的子数组数目:一次遍历模拟 力扣题目链接:https://leetcode.cn/problems/count-subarrays-of-length-three-with-a-condition/ 给你一个整数数组 nums ,请你返回长度为 3 的 子数组,满足…

读论文笔记-CoOp:对CLIP的handcrafted改进

读论文笔记-Learning to Prompt for Vision-Language Models Problems 现有基于prompt engineering的多模态模型在设计合适的prompt时有很大困难,从而设计了一种更简单的方法来制作prompt。 Motivations prompt engineering虽然促进了视觉表示的学习&#xff0c…

从零构建 MCP Server 与 Client:打造你的第一个 AI 工具集成应用

目录 🚀 从零构建 MCP Server 与 Client:打造你的第一个 AI 工具集成应用 🧱 1. 准备工作 🛠️ 2. 构建 MCP Server(服务端) 2.1 初始化服务器 🧩 3. 添加自定义工具(Tools&…

Django 自定义celery-beat调度器,查询自定义表的Cron表达式进行任务调度

学习目标: 通过自定义的CronScheduler调度器在兼容标准的调度器的情况下,查询自定义任务表去生成调度任务并分配给celery worker进行执行 不了解Celery框架的小伙伴可以先看一下我的上一篇文章:Celery框架组件分析及使用 学习内容&#xff…

蓝桥杯 1. 确定字符串是否包含唯一字符

确定字符串是否包含唯一字符 原题目链接 题目描述 实现一个算法来识别一个字符串的字符是否是唯一的(忽略字母大小写)。 若唯一,则输出 YES,否则输出 NO。 输入描述 输入一行字符串,长度不超过 100。 输出描述 输…

a-upload组件实现文件的上传——.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.txt

实现下面的上传/下载/删除功能&#xff1a;要求支持&#xff1a;【.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.txt】 分析上面的效果图&#xff0c;分为【上传】按钮和【文件列表】功能&#xff1a; 解决步骤1&#xff1a;上传按钮 直接上代码&#xff1a; <a-uploadmultip…

.NET Core 数据库ORM框架用法简述

.NET Core ORM框架用法简述 一、主流.NET Core ORM框架概述 在.NET Core生态系统中&#xff0c;主流的ORM(Object-Relational Mapping)框架包括&#xff1a; ​​Entity Framework Core (EF Core)​​ - 微软官方推出的ORM框架​​Dapper​​ - 轻量级微ORM​​Npgsql.Entit…