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