多態(tài),動(dòng)態(tài)方法調(diào)度(dynamic method dispatch)
多態(tài)Polymorphism,向上轉(zhuǎn)型Upcasting,動(dòng)態(tài)方法調(diào)度(dynamic method dispatch)
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。
什么叫多態(tài)?簡(jiǎn)言之,馬 克 - t o - w i n:就是父類引用指向子類時(shí),父類和子類必須同時(shí)擁有某個(gè)同名函數(shù),父類引用到底指向誰(調(diào)用誰的函數(shù)),是在runtime時(shí)決定的,因此呈現(xiàn)多種狀態(tài)(不知道會(huì)指向若干子類中的哪一個(gè)還是父類自己)。拿上一節(jié)的例子來講,比如運(yùn)行時(shí)如果用戶輸入自行車,就執(zhí)行自行車的駕駛方法。如果用戶輸入小轎車,就執(zhí)行小轎車的駕駛方法,涉及到用戶,這些都只能在運(yùn)行時(shí)才能干。運(yùn)行時(shí)的,就是動(dòng)態(tài)的,所以這也是動(dòng)態(tài)方法調(diào)度(dynamic method dispatch),既然是父類指針指向子類,這也是向上轉(zhuǎn)型Upcasting(為什么是向上?看我本章的第一張圖:父類 fuLei=(父類)new 子類(); ,,,,感覺到一種向上轉(zhuǎn)型的意味嗎?子類 zilei=(子類)fulei; 這是向下轉(zhuǎn)型)。順便提一句。馬克-to-win:學(xué)術(shù)界另有一種說法,overload也算多態(tài)。我認(rèn)為這只是學(xué)術(shù)上的一種說法而已,張三愛這么認(rèn)為,李四愛那么認(rèn)為,無所謂對(duì)錯(cuò)。不像語法錯(cuò)誤,錯(cuò)了,編譯器真不讓你通過。不過本書作者不支持這種overload說法。