泛型繼承之開(kāi)放(fàng)與封閉及泛型接口的使用
時間:2020-07-25 作者:管理員(yuán) 點擊:650
泛型繼承之開(kāi)放(fàng)與封閉
泛型類沒有具體(tǐ)的數據類型,它也具有普通類的繼承規則,不同的是在泛型類繼承上,基類和派生(shēng)類可能隻有一(yī)個泛型類也可能二者都是泛型類。
C#語音中(zhōng),所有的類型可分(fēn)爲開(kāi)放(fàng)類型和封閉類型兩部分(fēn)。
開(kāi)放(fàng)類型:尖括号中(zhōng)沒有指定具體(tǐ)的類型時就是開(kāi)放(fàng)類型
封閉類型:尖括号中(zhōng)指定了具體(tǐ)的類型時就是封閉類型
泛型繼承之 泛型類繼承普通類
它和類繼承是一(yī)樣的
1)、派生(shēng)的泛型類可以從普通基類中(zhōng)繼承各種成員(yuán);
2)、隐藏基類中(zhōng)的同名成員(yuán);
3)、通過重寫來實現多态。
需要注意的是:不能用派生(shēng)的泛型類中(zhōng)任何涉及到的成員(yuán)來重載基類中(zhōng)的成員(yuán)。
泛型繼承之 普通類繼承泛型類
由于基類和派生(shēng)類都是封閉類型,基類和派生(shēng)類的類型可以直接确定。
泛型繼承之 泛型類繼承泛型類
泛型類和泛型類直接的繼承要注意以下(xià)四種情況:
1)、在定義一(yī)個泛型類之後,它自身或者它的某個構造類型都可能成爲基類。
2)、如果泛型定義了多個參數,除了泛型類本身,其封閉的構造類型和開(kāi)放(fàng)的構造類型都可以作爲其他泛型類的基類。
3)、基類中(zhōng)如果出現了類型參數,那麽這些類型參數都必須在派生(shēng)類的定義中(zhōng)出現。
4)、如果基類和派生(shēng)類中(zhōng)同時出現了某個類型參數,那麽二者的含義是一(yī)緻的,它們指代同一(yī)個開(kāi)放(fàng)類型,而最終在使用時會被同一(yī)個封閉類型取代。
泛型接口的使用
接口也可以定義爲泛型接口,接口中(zhōng)的方法可以帶泛型參數,泛型接口爲排序和比較以及由泛型集合類型共享的功能提供了與非泛型接口對應的類型安全的泛型接口,泛型接口是比普通接口更爲抽象的數據類型,可以指定一(yī)個或多個類型參數,也可以爲類型參數添加類型限制,而泛型接口本身也可以用于類型限制。
泛型接口和泛型類類似,在類型限制的定義中(zhōng),要求用于限制的接口要麽是封閉類型(即不含類型參數),要麽所含的類型參數在所定義的泛型接口的類型參數中(zhōng)出現。
接口是抽象的數據類型,它隻可以有方法成員(yuán),而且隻定義方法的标識而不能有方法體(tǐ)。泛型接口所定義的類型參數可以在其方法成員(yuán)中(zhōng)作爲參數或返回類型來使用。作爲方法參數使用時,可以是引用參數、輸出參數和數組參數。