對(duì)Java程序多態(tài)性支持的改進(jìn)2007-09-06 10:48作者:佚名出處:論壇整理責(zé)任編輯:方舟
多態(tài)性(polymorphism)是面向?qū)ο缶幊痰膶傩裕试S多個(gè)方法使用同一個(gè)接口。Java從多個(gè)方面支持多態(tài)性,其中兩個(gè)方面最為突出。第一個(gè)是每個(gè)方法(標(biāo)記為 final的方法除外)都可以被子類重寫;第二個(gè)是設(shè)立interface關(guān)鍵字。下面將給出這兩方面的詳細(xì)介紹。 由于超類中的方法可以在派生類中重寫,因此創(chuàng)建類的層次結(jié)構(gòu)非常簡(jiǎn)單。在類的層次結(jié)構(gòu)中,每個(gè)子類都將它的超類特化(specialization)。大家知道,超類的一個(gè)引用可以引用它的任何一個(gè)子類,而且通過(guò)超類的引用調(diào)用某子類對(duì)象的一個(gè)方法時(shí),會(huì)自動(dòng)執(zhí)行由該子類重寫后的版本。因此,可以用超類來(lái)定義對(duì)象的形式并提供對(duì)象的默認(rèn)實(shí)現(xiàn),而子類根據(jù)這種默認(rèn)實(shí)現(xiàn)進(jìn)行修改,以更好地適應(yīng)具體情況的要求。因此,在超類中定義的一個(gè)接口可以作為多個(gè)不同實(shí)現(xiàn)的基礎(chǔ)。 當(dāng)然,Java進(jìn)一步采取了“一個(gè)接口,多個(gè)方法”的概念。它定義了interface關(guān)鍵字,這樣就可以將類的方法和類的實(shí)現(xiàn)完全分離。盡管接口是抽象的,但是仍然可以聲明接口類型的引用。這個(gè)概念非常重要,因?yàn)樗梢愿倪M(jìn)多態(tài)性的應(yīng)用。只要某個(gè)類實(shí)現(xiàn)一個(gè)接口,并且該接口提供了某種功能,那么任何需要這種功能的代碼都可以使用這個(gè)類的對(duì)象。例如,假設(shè)某個(gè)接口的名稱為MyIF,考慮下面的方法: void myMeth(MyIF ob) { // ... |
|
|
來(lái)自: ipinyou > 《程序開發(fā)技術(shù)》