點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程章節(jié)匯總
點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程第六章匯總
6.4 多態(tài)性
類的繼承不僅僅只是在定義新類的時(shí)候以你已經(jīng)定義約一個(gè)類作為基礎(chǔ)實(shí)現(xiàn)類的重用,而且它還利用一種被稱作多態(tài)性(polymorphism)的技術(shù)為你的應(yīng)用程序設(shè)計(jì)增加巨大的靈活性。那么什么是多態(tài)性呢?
多態(tài)性這個(gè)詞的意思有設(shè)定幾種不同格式或者形狀的能力。在程序設(shè)計(jì)階段,它指的是一個(gè)給定類型的單一變量可被用來(lái)引用不司類型對(duì)象,并旦可自動(dòng)地調(diào)用變量所引用的對(duì)象類型的特定方法。這使得對(duì)一個(gè)單一方法的調(diào)用將根據(jù)應(yīng)用這個(gè)調(diào)用的對(duì)象類型得到不同的操作行為。
要獲得多態(tài)性的行為需要滿足幾項(xiàng)要求,因此,讓我們一一介紹它們。首先,多態(tài)性對(duì)派生類對(duì)象起作用,它依賴于類層次內(nèi)的一個(gè)新功能。直到現(xiàn)在,我們總是使用一個(gè)給定類型的變量引用同種類型的對(duì)象。在這點(diǎn)上,派生類引入了一些新的靈活性。當(dāng)然,我們可以在一個(gè)派生類類型的變量中存儲(chǔ)一個(gè)派生類對(duì)象的引用,而且我們也可以在任何一個(gè)直接的或者間接的基類變量中存儲(chǔ)它。例如,如同前面的示意圖所示,一個(gè)Dog類型的對(duì)象變量可以用來(lái)存儲(chǔ)一個(gè)從Dog派生出來(lái)的任何類型的對(duì)象引用。如果這里的Dog類是從Animal類中派生出來(lái)的,則一個(gè)Animal.類型的變量也可以用來(lái)引用Spaniel、Chihuahua或者Collie對(duì)象。
當(dāng)調(diào)用一個(gè)方法時(shí),要得到多態(tài)性的操作,這個(gè)方法就必須是一個(gè)基類的成員,并且還要包含在派生類中。如果這個(gè)方法不是基類的一個(gè)成員,你就不能使用基類變量調(diào)用派生類對(duì)象的方法。在派生類中的方法定義必須與基類中的方法具有相同的署名和相同的返回類型,并且必須有一個(gè)限制不會(huì)更加嚴(yán)格的訪問(wèn)修飾符。事實(shí)上,如果你在派生類中用與基類中的方法的相同署名定義一個(gè)方法,任何試圖說(shuō)明一個(gè)不同的返回類型,或者是一個(gè)更加嚴(yán)格的訪問(wèn)修飾符,都會(huì)被編譯器作為一個(gè)錯(cuò)誤標(biāo)記。
相關(guān)推薦:
2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |