繼承
對(duì)象類的概念是很有用的,因?yàn)閷?duì)象類可以實(shí)現(xiàn)用最小的代價(jià)創(chuàng)建許多新的對(duì)象實(shí)例。使用繼承機(jī)制可使得這一概念更加有用[TAIV96]。
繼承可以在已有類上定義新的對(duì)象類。稱為子類的新類,將自動(dòng)包含稱為父類的原始類所定義的方法和變量。子類在許多方面不同于父類:
1. 子類可以包含父類中所沒(méi)有的方法和變量。
2. 子類可以通過(guò)重新定義來(lái)重載父類中任何相同名字的方法和變量。這提供了處理特例的簡(jiǎn)單有效方法。
3. 子類可以對(duì)從父類繼承的方法或變量在某些方面加以限制。
繼承機(jī)制是遞歸的,可以實(shí)現(xiàn)子類成為其子類的父類。這樣,就建立了一種繼承層次,從概上可以認(rèn)為繼承層次是定義了一種方法和變量的搜索技術(shù)。當(dāng)一個(gè)對(duì)象收到一個(gè)消息,而執(zhí)行沒(méi)有在其類中定義的方法時(shí),對(duì)象將沿繼承層次向上搜索直至找到該方法。類似地,,如果一種方法的執(zhí)行造成相關(guān)變量沒(méi)有在該類中定義,則對(duì)象就會(huì)沿著繼承層次向上搜索變量名。
多態(tài)性
多態(tài)性是一個(gè)很有趣且很有用的特性。它使得把不同實(shí)現(xiàn)隱藏于共同接口之后成為可能。兩個(gè)多態(tài)的對(duì)象使用相同的方法名字,對(duì)其他對(duì)象呈現(xiàn)相同接口。例如,對(duì)不同的輸出設(shè)備會(huì)有許多打印對(duì)象,如printDotmatrix、printLaser、printScreen等;或是不同類型的文件,如printText、printDrawing、print-Compound。如果每一對(duì)象包含一個(gè)稱為print的方法,那么通過(guò)向合適的對(duì)象發(fā)送print消息,任何文件都可以被打印,而不必關(guān)心方法是怎樣真正實(shí)現(xiàn)的,多態(tài)性典型地應(yīng)用于一個(gè)父類的多個(gè)子類的相同方法,每個(gè)方法都有一個(gè)不同的具體實(shí)現(xiàn)。
將多態(tài)性與常用的標(biāo)準(zhǔn)組件編程技術(shù)進(jìn)行比較是有益的。自上而下的標(biāo)準(zhǔn)組件設(shè)計(jì)的目的是要使用高層模塊的固定接口實(shí)現(xiàn)底層模塊的通用效用。可以實(shí)現(xiàn)一個(gè)較低層的模塊被許多不同的高層的模塊使用。
接口
接口使得子類對(duì)象使用父類的功能,有時(shí)需要定義一個(gè)具有多個(gè)父類功能的子類,這可能對(duì)相應(yīng)產(chǎn)生一個(gè)子類繼承多個(gè)父類。C++是一種允許多重繼承的語(yǔ)言。然而,為簡(jiǎn)單起見(jiàn),大多數(shù)現(xiàn)代面向?qū)ο缶幊陶Z(yǔ)言,如java、C#和Visual Basic.NET,限制一個(gè)子類能繼承一個(gè)父類。相反,接口為人所知的特征是可以實(shí)現(xiàn)一個(gè)類借用類中的一些功能或是借用完全不同類的功能。
源地址:http://www.lirenedu.org/index.php?ack=xinwen&id=1086