多態(tài)性(polymorphism)是面向?qū)ο缶幊痰膶傩?,它答?yīng)多個(gè)方法使用同一個(gè)接口。java從多個(gè)方面支持多態(tài)性,其中兩個(gè)方面最為突出。第一個(gè)是每個(gè)方法(標(biāo)記為 final的方法除外)都可以被子類重寫;第二個(gè)是設(shè)立interface要害字。下面將給出這兩方面的具體介紹。
由于超類中的方法可以在派生類中重寫,因此創(chuàng)建類的層次結(jié)構(gòu)非常簡單。在類的層次結(jié)構(gòu)中,每個(gè)子類都將它的超類特化(specialization)。大家知道,超類的一個(gè)引用可以引用它的任何一個(gè)子類,而且通過超類的引用調(diào)用某子類對(duì)象的一個(gè)方法時(shí),會(huì)自動(dòng)執(zhí)行由該子類重寫后的版本。因此,可以用超類來定義對(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要害字,這樣就可以將類的方法和類的實(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) {
// ...
}
任何實(shí)現(xiàn)了MyIF接口的對(duì)象都可以傳遞給myMeth()方法。該對(duì)象的其他功能無需考慮。myMeth()方法可以對(duì)任何實(shí)現(xiàn)了MyIF接口的對(duì)象進(jìn)行操作。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注