複製鏈接
請複製以下鏈接發送給好友

超類

鎖定
在軟件術語中,被繼承的類一般稱為“超類”,也有叫做父類。是繼承中非常重要的概念,它和子類一起形象地描述了繼承的層次關係。面向對象方法開發出的軟件具有較強的可重用性,重用依存於超類設計,沒有超類的對象系統不能物盡其用。超類設計的好與不好,首先看其內部重用率的高低,內部重用率高,必然外部重用率也高。 [1] 
中文名
超類
外文名
Super Class
別    名
父類
基本定義
被繼承的類
意    義
形象地描述繼承的層次關係
所屬學科
計算機軟件

超類超類和子類

被繼承的類一般稱為“超類”或“父類”,繼承的類稱為“子類”。當子類繼承超類時,不必寫出全部的實例變量和方法,只需聲明該類繼承了的已定義的超類的實例變量和方法即可。超類、子類是繼承中非常重要的概念,它們形象地描述了繼承的層次關係。繼承節省了定義新類的大量工作,可以方便地重用代碼。例如,把汽車作為父類,當創建汽車的子類轎車時,品牌、價格、最高時速等屬性會自動地被定義,調用剎車方法時會自動調用在汽車類中定義的剎車方法。但一個子類不必非要使用繼承下來的屬性和方法,一個子類可以選擇覆蓋已有的屬性和方法,或添加新的屬性和方法。
由繼承產生的子類比超類具有更多的特徵,因此有時很容易混淆二者的概念。通常情況下,每個子類的對象“is”它的超類的對象。一個超類可以有很多個子類,所以超類的集合通常比它的任何一個子類集合都大。例如交通工具包含飛機、汽車、自行車等,而汽車子類只是交通工具中的一個小子集。

超類識別超類

對超類的抽象即實例對象的泛化原則,可以從下面幾個方面考慮:
1、尋找大多數實例對象的共同行為。
例如“打印報表”、“查詢靜態代碼表”、“錄入數據庫表數據”等。
2、超類的多態性設計,要保證使用超類繼承關係可以滿足各子類的操作要求。
例如,繼承同一個“數據錄入”祖先窗口,可以完成不同結構數據庫表的數據錄入。
3、利於信息的隱蔽性,不會破壞數據的完整性,利於將複雜問題簡單化。
例如,對具有複雜關係、結構及相關存取操作的數據庫表集的維護,如果不使用一個泛化類將數據結構及其相關操作封裝起來,下層程序員要想操作有關庫表,就必須對庫表設計有深人的瞭解,並且確保程序算法設計不得破壞數據的相關一致性,這將大大增加程序設計和測試的難度,要求程序員有較豐富的經驗。而採用這種泛化類 (公用函數、公用存儲過程)後,程序員所要做的只是發“消息”和取“輸出信息”了。
4、有利於推行開發規範,統一界面風格。
如果能夠嚴格的統一編程風格,例如,所有屏幕按鈕的高、寬、起始位置都用精確到小數點後3位的X}y座標進行規定,那麼這樣出來的產品使人看上去就有賞心悦目之感。但是如果人人都做界面窗口、按鈕的精細調整,工作量勢必成倍增長。採用屏幕界面模板超類的繼承關係,結合特殊化處理,問題便可迎刃而解。

超類超類實現

超類的設計和實現,必須在程序員普遍進行實例對象開發之前完成。也就是説,面向對象的上層系統設計人員必須“文武”(設計與編程)雙全,能夠擔負起超類對象的程序實現與測試任務。這與結構化方法的上層系統設計人員基本可以不編程有所不同。同時,超類對象在下層開發過程中必須經常吸收特殊化過程中的反饋(包括來自用户的反饋),進行相應的調整修改。所以,採用面向對象方法設計中擔任超類對象設計與實現的設計人員,很難像結構化方法設計中那樣進人編程階段後就可以稍事輕鬆,他們往往始終離不開編程現場。
如果設計階段不預先設計和開發出超類對象,在同一項目的多數開發者之間沒有可以共同繼承的祖先對象,甚至在各個開發人員自己的作用範圍內都不使用繼承關係,那麼這不僅不是面向對象,就連稱之為面向對象的編程都很勉強。
埋頭於自己分擔的程序,對結構化方法或許是必須的,但在面向對象方法中擔任程序設計的開發人員,應該先去調查對象數據辭典中有無其他開發人員已經完成、自己稍加特殊化就可重用的對象。從總體上説,對象的共享、重用應該由上層設計人員統一管理,以便保證對象風格的一致性,避免衝突。但是,對象的獨立性、封裝性和多態性都很便於重用,這是結構化系統所不能比擬的,而重用是軟件開發方法學的最重要思想之一。上層設計人員往往不可能面面俱到,懂得軟件設計理論的開發人員,即使只開發下層程序也應採用最省力、最有效率的編程方法,即大量使用重用對象。 [2] 
參考資料
  • 1.    張亦輝、馮華、胡潔.Java面向對象程序設計:人民郵電出版社,2008
  • 2.    王慶育.軟件工程:清華大學出版社,2004