點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程章節(jié)匯總
點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程第六章匯總
6.5 多級(jí)繼承
正像我們?cè)诒菊麻_(kāi)始所指出的那樣,沒(méi)有什么可以阻止一個(gè)派生類(lèi)再作為一個(gè)基類(lèi)使用。例如,我們可以從類(lèi)Dog中再派生出一個(gè)類(lèi)Spaniel,不會(huì)存在任何問(wèn)題:
試試看--一個(gè)Spaniel類(lèi)
用最少的代碼來(lái)開(kāi)始這個(gè)Spaniel類(lèi):
class Spaniel extends Dog
{
Public Spaniel(string aName)
{
super(aName,Spaniel)
}
}
為了試驗(yàn)它,你可以在上個(gè)例子的數(shù)組the Animal中增加一個(gè)Spaniel對(duì)象,其改變的語(yǔ)句為:
Animal[]theAnimal(
new Dog(Rover, poodle)
new Cat(Max,Abyssinian)
new Duck(Daffy,Aylesbury)
new Spaniel("Fido")
不要忘記在Duck后面添加逗號(hào)。再次運(yùn)行這個(gè)例子。
如何操作
類(lèi)Spaniel將從類(lèi)Dog中繼承成員,包括Dog從類(lèi)Animal繼承過(guò)來(lái)的成員。類(lèi)Dog是直接的超類(lèi),而類(lèi)Animal是類(lèi)Spaniel的間接超類(lèi)。Spaniel只附加了一個(gè)構(gòu)造函數(shù)成員。它使用關(guān)鍵字super調(diào)用Dog類(lèi)的構(gòu)造函數(shù),并且把a(bǔ)hi~的值和String類(lèi)型的對(duì)象"Spaniel"傳遞給該函數(shù)。
如果你再一次運(yùn)行TryPalymorphi srn就應(yīng)該不時(shí)地選擇Spaniel對(duì)象。這樣,類(lèi)Spaniel也加入到了方法toString()和sound()的多態(tài)選擇中,在本例中這兩種方法是從父類(lèi)Dog中繼承過(guò)來(lái)的。這個(gè)被繼承的toString()方法與Spaniel對(duì)象一道運(yùn)行得非常出色,但是假如你想提供一個(gè)單一的版本,就可以把它加到Spaniel的定義中。以后Spaniel對(duì)象將自動(dòng)地選擇這個(gè)方法,而不是從Dog類(lèi)中繼承這個(gè)方法。
相關(guān)推薦:
2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |