java什么是類的多態(tài)性
1. 如果a是類A的一個引用,那么,a可以指向類A的一個實(shí)例,或者說指向類A的一個子類。
2. 如果a是接口A的一個引用,那么,a必須指向?qū)崿F(xiàn)了接口A的一個類的實(shí)例。
多態(tài)(Polymorphism)按字面的意思就是“多種狀態(tài)”。在面向?qū)ο笳Z言中,接口的多種不同的實(shí)現(xiàn)方式即為多態(tài)。引用Charlie Calverts對多態(tài)的描述——多態(tài)性是允許你將父對象設(shè)置成為和一個或更多的他的子對象相等的技術(shù),賦值之后,父對象就可以根據(jù)當(dāng)前賦值給它的子對象的特性以不同的方式運(yùn)作(摘自“Delphi4 編程技術(shù)內(nèi)幕”)。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。多態(tài)性在Object Pascal和C++中都是通過虛函數(shù)(Virtual Function) 實(shí)現(xiàn)的。
多態(tài)指同一個實(shí)體同時具有多種形式。它是面向?qū)ο蟪绦蛟O(shè)計(jì)(OOD)的一個重要特征。如果一個語言只支持類而不支多態(tài),只能說明它是基于對象的,而不是面向?qū)ο蟮摹++中的多態(tài)性具體體現(xiàn)在運(yùn)行和編譯兩個方面。運(yùn)行時多態(tài)是動態(tài)多態(tài),其具體引用的對象在運(yùn)行時才能確定。編譯時多態(tài)是靜態(tài)多態(tài),在編譯時就可以確定對象使用的形式。
C++中,實(shí)現(xiàn)多態(tài)有以下方法:虛函數(shù),抽象類,重載,覆蓋
java多態(tài)的實(shí)現(xiàn)主要體現(xiàn)在哪些方面
多態(tài)可分為:
1.編譯多態(tài):主要是體現(xiàn)在重載,系統(tǒng)在編譯時就能確定調(diào)用重載函數(shù)的哪個版本。
2.運(yùn)行多態(tài):主要體現(xiàn)在OO設(shè)計(jì)的繼承性上,子類的對象也是父類的對象,即上溯造型,所以子類對象可以作為父類對象使用,父類的對象變量可以指向子類對象。因此通過一個父類發(fā)出的方法調(diào)用可能執(zhí)行的是方法在父類中的實(shí)現(xiàn),也可能是某個子類中的實(shí)現(xiàn),它是由運(yùn)行時刻具體的對象類型決定的。