當前位置:編程學習大全網 - 熱門推薦 - 泛型技術的泛型概念

泛型技術的泛型概念

Doug McIlroy於1968年發表的壹篇著名論文Mass Producedoftware Components,那篇論文提出了reusable components(可復用軟件組件,又稱為軟件積木或軟件IC)的遠景。過去數十年來,泛型技術比較屬於研究單位中的驕客,實現出來且被廣泛運用的產品極少。雖然Ada, ALGOL68, Eiffel, C++等語言都支援泛型相關語法,但是直到C++ STL的出現,泛型技術在軟體發展圈內才開始有了大量反響。

泛型(generics, genericity)又稱為「參數化類型(parameterized types)」或模板(templates),或所謂「參數式的多型(parametric polymorphism)」。主要是壹種類型代換(type substitution)概念,是和繼承(inheritance)不同而互補的壹種組件復用機制。泛型技術最直接被聯想到的用途之壹就是建立資料群集(collections),允許使用者將某些特定類型的資料(物件)置入其中,並於取出時明確知道元素的類型,無需做(向下)轉型動作。假設某個泛型程序庫提供list,妳便可以明確宣告壹個內含int或double或Shape(使用者自定類型)元素的list(這是C++應用型式),或明確宣告壹個內含Integer 元素的list(這是Java應用型式),如下:

list<int> iList; // in C++

LinkedList<Integer> iList = new LinkedList<Integer>(); // in Java

組件(此處狹義地指classes)復用技術中,繼承和泛型的區別在哪裏?

可以這麽說,當妳運用繼承,面對不同的類型(types)妳將擁有相同的接口,而那些類型獲得了多型性(多態性,Polymorphics)。當妳運用泛型,妳將擁有許多不同的類型,並得以相同的演算法(如排序、搜尋)作用在它們身上。舉個例子,發展繪圖系統時我們往往會設計壹個CShape,並令所有(幾何乃至非幾何)形狀皆衍生自它。為了讓所有衍生自CShape 的形狀都有自繪能力,並有相同接口draw(),妳必須使用繼承技術並令draw()為壹個擬函數。此處所以采用繼承和擬機制,是因為draw()接口相同但演算法不同(不同的形狀當然有不同的繪圖法)

  • 上一篇:string音樂術語
  • 下一篇:火影忍者 動畫 迪達拉VS佐助 第幾集
  • copyright 2024編程學習大全網