java方法重載和重寫的知識點 什么是多態(tài)?java中如何實現(xiàn)多態(tài)?
什么是多態(tài)?java中如何實現(xiàn)多態(tài)?多態(tài)性分為編譯時多態(tài)性和運(yùn)行時多態(tài)性。1.編譯時多態(tài)性實際上是一種函數(shù)名相同但簽名不同的方法重載。值得注意的是,簽名不包括方法返回值。換句話說,兩個方法有相同的函數(shù)
什么是多態(tài)?java中如何實現(xiàn)多態(tài)?
多態(tài)性分為編譯時多態(tài)性和運(yùn)行時多態(tài)性。
1.編譯時多態(tài)性實際上是一種函數(shù)名相同但簽名不同的方法重載。值得注意的是,簽名不包括方法返回值。換句話說,兩個方法有相同的函數(shù)名和參數(shù),但返回值不同,編譯器返回錯誤。
2.運(yùn)行時多態(tài)性實際上與繼承和接口實現(xiàn)有關(guān)。子類可以重寫父類的非最終、非靜態(tài)、非私有方法,或者實現(xiàn)接口方法。在運(yùn)行時,動態(tài)地將實例綁定到父類或接口的引用,那么jvm如何知道哪個子類 的實例 的對應(yīng)方法來調(diào)用?這是你問的問題——Java中的對象在jvm內(nèi)部有描述元數(shù)據(jù),對象頭和當(dāng)前實例的類型信息存儲在對象頭中。調(diào)用時,jvm可以根據(jù)這個類型準(zhǔn)確地找出使用哪個子類方法。
自學(xué)半月Java,面向?qū)ο笤撛趺蠢斫饽兀?/h2>
理解面向?qū)ο笫抢斫釰ava編程的核心內(nèi)容。面向?qū)ο笫且粋€很大的概念,基于面向?qū)ο箝_發(fā)了很多應(yīng)用,比如面向?qū)ο蠓治?,面向?qū)ο笤O(shè)計等等。從Java語言的角度來看,理解面向?qū)ο罂梢詮囊韵聨讉€方面來理解:
首先,面向?qū)ο蟮母拍钍腔跀?shù)據(jù)結(jié)構(gòu)和功能的。可以說,面向?qū)ο笫且环N組織數(shù)據(jù)和函數(shù)的,函數(shù)操縱數(shù)據(jù),數(shù)據(jù)又決定函數(shù)。由此抽象出四個核心概念:屬性、方法、對象和類。屬性代表數(shù)據(jù),方法代表函數(shù),對象代表數(shù)據(jù)和方法的集成,類是一組對象的抽象定義。
第二,面向?qū)ο蟮奶匦园ǚ庋b、繼承和多態(tài)。封裝的功能是保護(hù)數(shù)據(jù)。有三個步驟,即成員財產(chǎn)私有化、定義制定者和定義獲取者。繼承的作用是實現(xiàn)類的專門化和大眾化,體現(xiàn)了發(fā)展的理念,也是數(shù)據(jù)結(jié)構(gòu)和方法的共享機(jī)制。多態(tài)性反映了同一對象在不同情況下的動態(tài)行為。綜上所述,多態(tài)性可以用 "三個定義 "和 "兩種方法 "。三個定義是父類定義子類構(gòu)造、接口定義類構(gòu)造和抽象類定義實體類構(gòu)造,兩個方法是方法重載和方法重寫。
第三,面向?qū)ο蟮木幊踢^程。簡單來說,面向?qū)ο蟮木幊踢^程包括類的定義、對象的創(chuàng)建和方法的調(diào)用。
我使用Java語言很久了,在頭條寫了一系列關(guān)于Java學(xué)習(xí)的文章,包括基礎(chǔ)部分和并發(fā)編程部分。有興趣的朋友可以關(guān)注我的頭條號,相信我會有所收獲。
如果你對Java編程有什么疑問,也可以咨詢我,謝謝!