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