• 抽象類型

    編輯
    本詞條由“匿名用戶” 建檔。

    抽象類型

    編輯

    編程語言中,抽象類型是指記名類型系統中不能直接實例化的類型;非抽象的類型--可以實例化的類型--被稱為具體類型。抽象類型的每個實例都是某個具體子類型的實例。抽象類型也被稱為存在性類型。一個抽象類型可能不提供任何實現,或者不完整的實現。在一些語言中,沒有實現的抽象類型(而不是不完整的實現)被稱為協議、接口、簽名或類類型。在基于類的面向對象編程中,抽象類型被實現為抽象類(也被稱為抽象基類),而具體類型被實現為具體類。在泛型編程中,類似的概念是一個概念,它同樣規定了語法和語義,但不需要子類型關系:兩個不相關的類型可以滿足同一個概念。通常,抽象類型會有一個或多個單獨提供的實現,例如,以可以實例化的具體子類型的形式。在面向對象的編程中,一個抽象類可能包括其子類所共享的抽象方法或抽象屬性。其他用于實現抽象類型的語言特性的名稱包括特征、混合、風味、角色或類型類

    符號化抽象類型

    編輯

    抽象類可以通過幾種方式被創建、符號化或模擬。通過在類定義中使用明確的關鍵字abstract,如Java、D或C#。通過在類定義中包括一個或多個抽象方法(在C++中稱為純虛函數),該類被聲明為接受其協議的一部分,但沒有提供實現。通過從抽象類型繼承,但沒有覆蓋完成類定義所需的所有缺失特征。換句話說,一個沒有從它的父類實現所有抽象方法的子類本身就成了抽象的。在許多動態類型的語言中,比如Smalltalk,任何向此發送特定方法但不實現該方法的類都可以被視為抽象的。

    實例化

    (然而,在許多這樣的語言中,比如Objective-C,直到使用該類時才發現錯誤,信息返回的結果是異常錯誤信息,比如Doesnotrecognizeselector:xxxas-[NSObjectdoesNotRecognizeSelector:(SEL)selector]在檢測到未實現的方法時被調用)。示例(Java)//默認情況下,所有類中的所有方法都是具體的,除非使用了抽象關鍵字。abstractclassDemo{//一個抽象類可以包括抽象方法,這些方法沒有實現。abstractpublicintsum(intx,inty);

    使用抽象類型

    編輯

    抽象類型是靜態類型的OOP語言的一個重要特征。許多動態類型的語言沒有相應的特征(盡管鴨子類型的使用使得抽象類型沒有必要);但是在一些現代動態類型的語言中發現了traits。一些作者認為,類應該是葉子類(沒有子類型),否則就是抽象的。抽象類型很有用,因為它們可以用來定義和執行一個協議;一組所有實現該協議的對象都必須支持的操作。抽象類型也是模板方法模式的一個重要組成部分。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/170666/

    (4)
    詞條目錄
    1. 抽象類型
    2. 符號化抽象類型
    3. 使用抽象類型

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久