java-----------------多態

多態,當前指的是 java 所呈現出來的一個對象
?

多態


?
定義
?


多態是指同一個行為具有多個不同表現形式或形態的能力。在面向對象編程中,多態通過方法重載和方法重寫來實現。

強弱類型語言

?javascript 或者python 是弱類型語言

C 語言,或者 C++也好,是強類型語言
?

通俗來講,強類型語言是指當前的數據類型是確定好了的,每次賦值必須要用表示該類型的特定字符,否則報錯,反之則為弱類型語言


java /C /C++ 等,當中的數據類型,它決定數據在內存當中的存儲形式。
對于 python /javascript等,沒有什么數據類型,統一用一個變量(如var)代替所有的數據類型

PS:繼承的本質是代碼的復用,而代碼復用的實現方式就是能夠調用父類的變量和方法


方法重載
?
概念:在同一個類中,允許存在多個同名方法,但這些方法的參數列表不同(參數個數、類型或順序不同)。
?
public class Calculator {
? ? public int add(int num1, int num2) {
? ? ? ? return num1 + num2;
? ? }

? ? public double add(double num1, double num2) {
? ? ? ? return num1 + num2;
? ? }
}
?
?
在上述代碼中,?Calculator?類有兩個?add?方法,通過參數類型的不同來區分。
?
方法重寫
?
概念:子類重寫父類中已有的方法。要求方法名、參數列表和返回值類型必須與父類中被重寫的方法一致(在Java中,返回值類型可以是父類返回值類型的子類,這是協變返回類型)。
?
class Animal {
? ? public void makeSound() {
? ? ? ? System.out.println("動物xxxxxx");
? ? }
}

class Dog extends Animal {
? ? @Override
? ? public void makeSound() {
? ? ? ? System.out.println("汪汪汪");
? ? }
}
?
?
這里?Dog?類重寫了?Animal?類的?makeSound?方法。

如下圖:

由圖可知,B繼承自A,C、D繼承自B,從Test的main方法可推斷

1、"A and A"

? ? ? a1這個變量引用的是A類型,b引用的是B類型,B繼承自A,A中有兩個方法,分別要輸入參數A和D,B繼承于A,此時B的類型向上轉型為A,則此時a1.Show(b)即為A.Show(A),結果為A and A

2、"A and A"

? ? ?同理1,C繼承自B,向上轉型至B,但沒有以B為參數的方法則再次向上轉型為A

3、"A and D"

? ? ?A中就把本來就含有以D為參數的方法,則不會轉型,此時會直接調用輸出A and D

4、"B and A"

? ? ?a2引用B方法,B繼承自A,所以理論上來說a2可以同時調用AB中的4個方法,但是B會對A中的Show(A)方法進行重寫。所以b調用的B方法由B向上轉型為A后,輸出的結果為B and A

5、"B and A"

? ?同理1,C繼承自B,向上轉型至B,但沒有以B為參數的方法則再次向上轉型為A,B對A中的Show(A)方法進行重寫,輸出B and A

6、"A and D"

? ?同理3,對Show(A)改寫但對Show(D)無影響,輸出A and D

7、"B and A"

? ??同理4

9、”A and D“

? ? 同理3,對Show(A)改寫但對Show(D)無影響,輸出A and D

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

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

相關文章

Java 23種設計模式 - 結構型模式7種

Java 23種設計模式 - 結構型模式7種 1 適配器模式 適配器模式把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。 優點 將目標類和適配者類解耦增加了類的透明性和復用性,將具體的實現封…

Git clone時出現SSL certificate problem unable to get local issuer certificate

正確解決方法 git config --global http.sslVerify false錯誤解決方法:(主要是看錯了嘿嘿,但是如果是 OpenSSL SSL_read: Connection was reset, errno 10054 Failed to connect to github.com port 443: Timed out 原…

DevExpressWinForms-AlertControl-使用教程

文章目錄 AlertControl-使用教程一、將 AlertControl 添加到 Form二、編輯 AlertControl 的 HtmlTemplateHTML Template Editor介紹編輯HTML Template 三、使用AlertControl彈出AlertAlert中的按鈕事件獲取 Alert 標題等信息向Alert傳遞參數 總結源碼 AlertControl-使用教程 一…

制作項目進度表常用的 8 款項目管理工具分享

在數字化管理和高效協作的今天,項目進度表軟件已經成為企業管理不可或缺的工具。無論是中小型企業還是大型機構,都需要通過精準的項目計劃和實時的進度跟蹤來確保業務目標的順利達成。這篇文章將聚焦項目進度表軟件,深入探討市場上8款主流產品…

SecureCRT網絡穿透/代理

場景 公司的辦公VPN軟件只有Windows系統版本,沒有Macos系統版本,而日常開發過程中需要先登錄VPN后,然后才能登錄應用服務器。 目的:Macos系統在使用SecureCRT時,登錄服務器,需要走Parallels Desktop進行網絡…

【計算機網絡-傳輸層】傳輸層協議-TCP核心機制與可靠性保障

📚 博主的專欄 🐧 Linux | 🖥? C | 📊 數據結構 | 💡C 算法 | 🅒 C 語言 | 🌐 計算機網絡 上篇文章:傳輸層協議-UDP 下篇文章: 網絡層 我們的講解順序是&…

OpenMagnetic的介紹與使用

1. Background OM(OpenMagnetic)OpenMagnetics,能涵蓋氣隙磁阻,磁導率,鐵芯損耗、磁滯損耗、渦流電流損耗、渦流效應、漏感、溫升的計算與仿真[1]。 鐵損計算模型:改進的Steinmetz方程[2] 氣隙阻抗計算&…

【JVM】從零開始深度解析JVM

本篇博客給大家帶來的是JVM的知識點, 重點在類加載和垃圾回收機制上. 🐎文章專欄: JavaEE初階 🚀若有問題 評論區見 ? 歡迎大家點贊 評論 收藏 分享 如果你不知道分享給誰,那就分享給薯條. 你們的支持是我不斷創作的動力 . 王子,公主請閱🚀 …

字符串---Spring字符串基本處理

一、String類的特性 不可變性 String對象一旦創建,內容不可更改,任何修改操作都會生成新對象。字符串常量池 字符串字面量(如"abc")直接存儲在常量池中,重復字面量共享同一內存地址。創建方式 雖然都是字符…

26考研——中央處理器_CPU 的功能和基本結構(5)

408答疑 文章目錄 一、CPU 的功能和基本結構CPU 的功能CPU 的基本結構運算器控制器 CPU 的寄存器運算器中的寄存器控制器中的寄存器 八、參考資料鮑魚科技課件26王道考研書 九、總結 一、CPU 的功能和基本結構 CPU 的功能 中央處理器(CPU)由運算器和控…

傳統數據展示 vs 可視化:誰更打動人心?

數據,每天都在我們身邊流動:從你手機里的健康步數,到企業財報中的營收增長,再到國家發布的經濟指標。但問題是——你怎么“看”這些數據? 過去,我們習慣用表格、文字和報告來展示數據,這種方式…

Base64 編碼原理詳細解析

Base64 編碼是一種常見的數據編碼方式,它將二進制數據轉化為可打印的 ASCII 字符串。Base64 編碼廣泛應用于電子郵件、URL 編碼、HTTP 請求和響應中等場景。它的核心作用是讓二進制數據可以通過僅支持文本的協議或媒介進行傳輸。本文將更深入地探討 Base64 編碼的原…

一周學會Pandas2 Python數據處理與分析-Pandas2數據排序操作

鋒哥原創的Pandas2 Python數據處理與分析 視頻教程: 2025版 Pandas2 Python數據處理與分析 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili Pandas 2提供了多種靈活的數據排序方法,主要針對 DataFrame 和 Series 對象。 1. 按值排序:s…

計算機二級(C語言)已過

非線性結構:樹、圖 鏈表和隊列的結構特性不一樣,鏈表可以在任何位置插入、刪除,而隊列只能在隊尾入隊、隊頭出隊 對長度為n的線性表排序、在最壞情況下時間復雜度,二分查找為O(log2n),順序查找為O(n),哈希查…

Windows Server 2025開啟GPU分區(GPU-P)部署DoraCloud云桌面

本文描述在ShareStation工作站虛擬化方案的部署過程。 將服務器上部署 Windows Server、DoraCloud,并創建帶有vGPU的虛擬桌面。 GPU分區技術介紹 GPU-P(GPU Partitioning) 是微軟在 Windows 虛擬化平臺(如 Hyper-V)中…

Android RxJava框架分析:它的執行流程是如何的?它的線程是如何切換的?如何自定義RxJava操作符?

目錄 RxJava是什么?為什么使用。RxJava是如何使用的呢?RxJava如何和Retrofit一起使用。RxJava源碼分析。 (1)他執行流程是如何的。(2)map(3)線程的切換。 如何自定義RxJava操作符…

QT的初始代碼解讀及其布局和彈簧

this指的是真正的當前正在顯示的窗口 main函數: Widget w是生成了一個主窗口,QT Designer是在這個主窗口里塞組件 w.show()用來展示這個主窗口 頭文件: namespace Ui{class Widget;}中的class Widget和下面的class Widget不是一個東西 Ui…

什么是AI寫作

一、AI寫作簡介 AI 寫作正在成為未來 10 年最炙手可熱的超級技能。已經有越來越多的人通過 AI 寫作,在自媒體、公文寫作、商業策劃等領域實現了提效,甚至產生了變現收益。 掌握 AI 寫作技能,不僅能提高個人生產力,還可能在未來的 …

13.原生測試框架Unittest解決用例組織問題 與測試套件的使用

13. 原生測試框架Unittest解決用例組織問題 與測試套件的使用 一、測試架構核心組件解析 1.1 系統組成模塊 #mermaid-svg-bYie0B3MLRp0HL4g {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bYie0B3MLRp0HL4g .erro…

UE5 腳部貼地不穿過地板方案

UE自帶的IK RIG和ControlRig技術 【UE5】角色腳部IK——如何讓腳貼在不同斜度的地面(設置腳的旋轉)_嗶哩嗶哩_bilibili 實驗后這個還是有一部分問題,首先只能保證高度不能穿過,但是腳步旋轉還是會導致穿模 IK前,整個模型在斜坡上會浮空 參考制作:https://www.youtube.com/w…