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.pswp.cn/diannao/81098.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81098.shtml
英文地址,請注明出處:http://en.pswp.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…