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