Java SE--繼承

一.為什么要繼承呢?

可以保持原有類的功能上擴展新功能,繼承主要解決的問題是共性的抽取,實現代碼的復用

二.繼承的語法

舉例:

相關圖像:

三.父類成員訪問

1.子類中(注意訪問父類的成員變量

了解原因:繼承下來父類成員可能與子類成員同名時(主要原因),在子類成員方法中訪問該類成員時該訪問哪一個?或者利用子類對象引用同名成員時該訪問哪一個?

子類方法中(在父類方法不一樣)或子類對象訪問成員時:

如果訪問的成員變量子類中有,優先訪問自己的成員變量。

如果訪問的成員變量子類中無,則訪問父類繼承下來的,如果父類也沒有定義。

如果訪問的成員變量與父類中成員變量同名,則優先訪問自己的。

成員變量訪問遵循就近原則,自己有優先自己的,如果沒有則向父類中找。

舉例和相關圖像:

2.子類中訪問父類的成員方法

子類方法中子類對象訪問成員方法時:

通過子類對象訪問父類與子類中不同名方法時,優先在子類中找,找到則訪問,否則在父類中找,找到則訪問,否則編譯報錯。

通過派生類對象訪問父類與子類同名方法時,如果父類和子類同名方法的參數列表不同(重載),根據調用方法適傳遞的參數選擇合適的方法訪問,如果沒有則報錯;如果父類和子類同名方法的參數列表相同(重寫以后會講)成員方法訪問遵循就近原則,自己有優先自己的,如果沒有則向父類中找。

舉例和相關圖像:

問題:如果出現在繼承時出現同名成員變量或方法時,我們該在子類中如何訪問與父類的成員變量和方法同名的成員變量和方法呢?

?四.super關鍵字

作用:在子類中訪問父類的成員變量和方法

五.子類構造方法

1.若父類顯式定義無參或者默認的構造方法在子類構造方法第一行默認有隱含的super()調用,即調用基類構造方法

2.如果父類構造方法是帶有參數的,此時需要用戶為子類顯式定義構造方法,并在子類構造方法中選擇合適的父類構造方法調用,否則編譯失敗。

3.在子類構造方法中,super(..)調用父類構造時,必須是子類構造函數中第一條語句

4.super(..)只能在子類構造方法中出現一次,并且不能和this同時出現(講this和super區別會講)

六.this和super的區別

相同點:

1.都是lava中的關鍵字

2.只能在類的非靜態方法中使用,用來訪問非靜態成員方法和字段

3.在構造方法中調用時,必須是構造方法中的第一條語句,并且不能同時存在

不同點:

1.this是當前對象的引用,當前對象即調用實例方法的對象,super相當于是子類對象中從父類繼承下來部分成員的引用

2.在非靜態成員方法中,this用來訪問本類的方法和屬性,super用來訪問父類繼承下來的方法和屬性

3.在構造方法中:this(..)用于調用本類構造方法,super(..)用于調用父類構造方法,倆者都必須是構造方法的第一條語句,所以兩種調用不能同時在構造方法中出現
4.構造方法中一定會存在super(..)的調用,用戶沒有寫編譯器也會增加,但是this(..)用戶不寫則沒有

七.再談初始化

之前在談初始化時執行順序時沒有繼承,那繼承時執行順序會是什么樣呢?

由上述代碼加上之前學習的對執行順序進行總結:

步驟類別執行類容
1父類靜態父類static修飾的成員變量初始化----》父類靜態代碼塊
2子類靜態子類static修飾的成員變量初始化----》子類靜態代碼塊
3父類實例父類實例變量初始化---》父類實例代碼塊---》父類構造方法
4子類實例子類實例變量初始化---》子類實例代碼塊---》子類構造方法

八.protected(類和對象補充訪問限定符)

代碼舉例:

九.繼承方式

1.單繼承

2.多層繼承(最好別超過3層)

3.不同類繼承一個類

4.多繼承(不支持)

十.final關鍵字

1.修飾變量或字段(類中成員變量):表示常量(既不能修改)

2.修飾類:表示該類不能被繼承,叫做密封類

3.修飾方法:表示該方法不能被重寫(以后講)

十一.繼承和組合

繼承表示對象之間是is-a的關系,比如:狗是動物,貓是動物
組合表示對象之間是has-a的關系,比如:汽車和其輪胎、發動機、方向盤、車載系統等的關系就應該是組合,因為汽車是有這些部件組成的

舉例:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88145.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88145.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88145.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

掌握 Winget 安裝:從 Microsoft Store 到 winget-install 腳本的完整方案

掌握 Winget 安裝:從 Microsoft Store 到 winget-install 腳本的完整方案 Winget 作為 Windows 官方推出的命令行包管理工具,能極大簡化軟件的安裝、升級與卸載流程。本文將系統梳理從官方渠道到第三方工具的多種安裝方式,涵蓋普通用戶、開發…

簡單來說:Redis的增量同步是怎么一回事

簡單來說: 增量同步就是Master 只把比 Slave 新的數據發給 Slave,而不是發送全部數據。它像一個持續更新的直播流,或者我之前比喻的“每日更新期刊”。Slave 不用重新加載所有數據,只需要接收和應用這些新的更新。 這就像&#xf…

MySQL 安全優化指南:保護你的數據庫免受攻擊

在當今高度互聯的數字世界中,數據是企業的核心資產,而數據庫則是存儲這些資產的堡壘。作為最流行的開源關系型數據庫之一,MySQL 被廣泛應用于各種業務場景。然而,其普及性也使其成為網絡攻擊者青睞的目標。一旦數據庫被攻破,可能導致敏感數據泄露、業務中斷、聲譽受損,甚…

界面控件Telerik UI for WinForms 2025 Q2亮點 - 支持.NET 10 Preview

隨著2025年第二季度新版本的發布,Progress Telerik通過流行的集成IDE的AI編碼助手,基于提示的樣式和基于GenAI的報表見解重新定義了開發人員的工作效率! Telerik和Kendo UI在構建尖端應用程序時繼續推動開發人員工作效率提升,202…

DVWA靶場通關筆記-驗證碼繞過reCAPTCHA(Medium級別)

目錄 一、reCAPTCHA 二、代碼審計(Medium級別) 1、滲透準備 (1)配置security為Medium級別。 (2)配置RECAPTCHA參數 (3)再次打開靶場 2、源碼分析 (1)…

人工智能安全基礎復習用:對抗樣本檢測與防御

一、對抗樣本(Adversarial Examples)定義:對輸入樣本添加人眼無法察覺的細微干擾,導致模型以高置信度輸出錯誤結果。對抗樣本的分布通常偏離自然數據分布,與正常樣本在模型中間層/輸出層的分布存在差異。核心目標&…

[數學基礎] 矩陣的秩及其應用

深入淺出:矩陣的秩及其應用 文章目錄深入淺出:矩陣的秩及其應用一、數學定義二、核心作用三、計算方法與步驟方法1:高斯消元法(最常用)方法2:奇異值分解(SVD)方法3:行列式…

LKH-3算法求解TSP問題基本原理與應用

通俗理解LKH-3算法 LKH-3(Lin-Kernighan-Helsgaun)是求解**旅行商問題(TSP)**的最強啟發式算法之一,由丹麥計算機科學家Keld Helsgaun在LKH-2基礎上改進而來。它的核心思想是:通過智能的“局部破壞與修復”…

游戲開發學習記錄

初始化只是第一次實例化的時候調用,show和unshow是打開界面和關閉界面的時候,會多次調用 在一個腳本里面show是每一次打開界面的時候需要做的事情,而Init是初始化。UIMgr里面的數據結構:為什么我要先從數據結構入手呢?…

一級緩存與二級緩存深度剖析:作用域、配置與同步方案全解析

引言 在分布式系統與高并發場景下,緩存機制已成為提升系統性能的關鍵技術。本文從作用域、失效機制、配置實踐到同步方案,系統化解析一級緩存與二級緩存的核心差異與工程實踐。 一、一級緩存:會話級數據加速器 1.1 作用域與生命周期 作用域&a…

OneCode MQTT插件開發實戰:基于Paho.Client的物聯網通信解決方案

引言 在物聯網應用開發中,MQTT協議因其輕量、低帶寬占用的特性被廣泛采用。OneCode平臺提供的xui.MQTT插件基于Eclipse Paho.Client實現了完整的MQTT通信能力,本文將從插件用途、核心實現、開發要點和功能擴展四個維度,詳解如何基于該插件構建…

1.1_5_1 計算機網絡的性能指標(上)

在這個小節中我們要學習計算機網絡的性能指標,我們在考研當中主要掌握這樣的七個性能指標,分別是速率、帶寬、吞吐量、時延、時延帶寬積、往返時延和信道利用率。我會把相關性比較緊密的性能指標放在一起講解。在這個視頻中,我們先來學習前三…

Python 性能優化指南:深入剖析代碼分析與優化工具

Python 性能優化指南:深入剖析代碼分析與優化工具 在 Python 的廣泛應用場景中,性能優化既是挑戰,也是機遇。無論是構建 Web 應用還是處理數據分析,理解代碼性能瓶頸并有效優化至關重要。本文將探討 Python 代碼性能分析的核心方法,并逐步解析關鍵工具的使用技巧,帶您從…

力扣打卡第二十一天 中后遍歷+中前遍歷 構造二叉樹

106. 從中序與后序遍歷序列構造二叉樹 給定兩個整數數組 inorder 和 postorder ,其中 inorder 是二叉樹的中序遍歷, postorder 是同一棵樹的后序遍歷,請你構造并返回這顆 二叉樹 。 示例 1: 輸入:inorder [9,3,15,20,7], postor…

Notepad++正則表達全解

摘要:Notepad正則表達式符號大全包含11類常用語法:基礎符號(.^$?等)、預定義字符類(\d\w\s等)、錨點(\b\B)、量詞({n,m})、分組引用(()$1)、字符…

前后端分離(java) 和 Nginx在服務器上的完整部署方案(redis、minio)

一、準備工作 服務器環境要求 銀河麒麟 V10 操作系統 開放端口:MinIO (9000、9001)、 Redis (6379)、應用服務 jar包(18888)、前端服務(8080) 系統用戶:具有 sudo 權限的用戶 操作:需要先有必備的工具前端的vsCode,webStrom、后臺的idea&…

貪心算法:簡單而高效的求解策略C++

貪心算法詳解及C實現 1. 什么是貪心算法 貪心算法(Greedy Algorithm)是一種在每一步選擇中都采取在當前狀態下最好或最優(即最有利)的選擇,從而希望導致結果是全局最好或最優的算法策略。 貪心算法與動態規劃不同在于它…

IDEA 中使用 <jsp:useBean>動作指令時,class屬性引用無效

問題&#xff1a;在 IDEA 中創建 Java Web項目&#xff0c;在src/model包下存在一個Student類該類中包含&#xff1a;全參構造器、私有屬性的get/set方法。然后在 jsp 頁面中使用 <jsp:useBean>創建Student類的對象&#xff1a;訪問頁面時報錯&#xff1a;原因&#xff1…

【網絡】Linux 內核優化實戰 - net.core.flow_limit_table_len

目錄參數作用查看與修改調優建議相關警告net.core.flow_limit_table_len 是 Linux 內核中的一個網絡參數&#xff0c;用于控制**流限制表&#xff08;Flow Limit Table&#xff09;**的大小。這個表主要用于限制網絡流量中單個"流"&#xff08;通常指來自同一源IP、端…

前端開發常見問題技術文章大綱

前端開發常見問題技術文章大綱 常見性能優化問題 頁面加載速度慢的原因及解決方案渲染阻塞資源的優化方法內存泄漏的檢測與修復 跨瀏覽器兼容性問題 不同瀏覽器對CSS和JavaScript的支持差異Polyfill和Shim的使用場景如何利用工具檢測兼容性問題 響應式設計挑戰 媒體查詢的最佳實…