開(kāi)始在簡(jiǎn)書(shū)的第一篇文章,今天面試的第一個(gè)問(wèn)題,解釋下java的多態(tài)性,雖然解釋出來(lái)了,但是個(gè)人覺(jué)得還是不滿(mǎn)意。所以還是要總結(jié)下,為了下次能更好地回答這個(gè)問(wèn)題。
java有三大特性,封裝、繼承、多態(tài)。今天來(lái)說(shuō)說(shuō)多態(tài),多態(tài)是Java實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性的基礎(chǔ)是動(dòng)態(tài)方法調(diào)度,它是一種在運(yùn)行時(shí)而不是在編譯期調(diào)用重載方法的機(jī)制。
(1)運(yùn)行時(shí)多態(tài):
運(yùn)行時(shí)多態(tài)是指程序中定義的引用變量所指向的具體類(lèi)型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類(lèi)的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類(lèi)中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定.
(2)java多態(tài)性的的實(shí)現(xiàn)的表現(xiàn)形式有:
? ?(2.1)接口和實(shí)現(xiàn)接口并覆蓋接口中的同一個(gè)方法的幾種不同類(lèi)實(shí)現(xiàn);
? ?(2.2)父類(lèi)和繼承父類(lèi)并覆蓋接口中的同一個(gè)方法的幾種不同類(lèi)實(shí)現(xiàn);
? (2.3)重載Overloading是一個(gè)類(lèi)中多態(tài)性的表現(xiàn)形式。
(3)具體實(shí)現(xiàn):有一道經(jīng)典的面試題講的很好:http://www.jb51.net/article/34413.htm