सार प्रकार

प्रोग्रामिंग भाषाओं में, एब्सट्रैक्ट नामांकित प्रकार की प्रणाली है जो सीधे उदाहरण (कंप्यूटर विज्ञान) नहीं हो सकता है; प्रकार जो एब्सट्रैक्ट नहीं है - जो  'कर सकता है को तत्काल किया जा सकता है-कंक्रीट प्रकार कहा जाता है। एब्सट्रैक्ट प्रकार का प्रत्येक उदाहरण कुछ कंक्रीट उपप्रकार का उदाहरण है। एब्सट्रैक्ट प्रकारों को 'अस्तित्ववादी प्रकार' के रूप में भी जाना जाता है। एब्सट्रैक्ट प्रकार कोई कार्यान्वयन या अधूरा कार्यान्वयन प्रदान नहीं कर सकता है। कुछ भाषाओं में, कार्यान्वयन के बिना एब्सट्रैक्ट प्रकार (अधूरे कार्यान्वयन के बदले) को ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग)]], अंतराफलक, हस्ताक्षर या वर्ग प्रकार के रूप में जाना जाता है। क्लास-बेस्ड ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, एब्सट्रैक्ट प्रकार को एब्सट्रैक्ट क्लासेस (एब्सट्रैक्ट आधार क्लासेस के रूप में भी जाना जाता है) के रूप में क्रियान्वित किया जाता है, और कंक्रीट टाइप्स को कंक्रीट क्लासेस के रूप में क्रियान्वित किया जाता है। सामान्य प्रोग्रामिंग में, समान धारणा अवधारणा (जेनेरिक प्रोग्रामिंग) है, जो समान रूप से सिंटैक्स और शब्दार्थ को निर्दिष्ट करती है, परन्तु उपप्रकार संबंध की आवश्यकता नहीं होती है: दो असंबंधित प्रकार एक ही अवधारणा को संतुष्ट कर सकते हैं।

अधिकांशतः एब्सट्रैक्ट प्रकारों में एक या अधिक कार्यान्वयन अलग से प्रदान किए जाते हैं, उदाहरण के लिए, ठोस उपप्रकारों के रूप में जिन्हें तत्काल किया जा सकता है। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, एब्सट्रैक्ट क्लासेस में एब्सट्रैक्ट तरीके या एब्सट्रैक्ट गुण सम्मिलित हो सकते हैं जो इसके उपवर्गों द्वारा साझा किए जाते हैं। एब्सट्रैक्ट प्रकारों को क्रियान्वित करने के लिए उपयोग की जाने वाली भाषा सुविधाओं के अन्य नामों में विशेषता (कंप्यूटर विज्ञान), मिश्रण, पदार्थ, भूमिकाएं या प्रकार क्लासेस सम्मिलित हैं।

एब्सट्रैक्ट प्रकार का संकेत
एब्सट्रैक्ट वर्ग कई तरीकों से बनाए जा सकते हैं, संकेतित या सिम्युलेटेड हो सकते हैं:
 * स्पष्ट कीवर्ड (कंप्यूटर प्रोग्रामिंग) के उपयोग से abstract जावा (प्रोग्रामिंग भाषा), डी (प्रोग्रामिंग भाषा) या सी शार्प (प्रोग्रामिंग लैंग्वेज) के रूप में क्लास परिभाषा में C # होता है।
 * वर्ग परिभाषा में, एक या एक से अधिक एब्सट्रैक्ट विधियों (जिन्हें C++ में शुद्ध आभासी कार्य कहा जाता है) को सम्मिलित करके, जिसे क्लासेस को इसके प्रोटोकॉल के भाग के रूप में स्वीकार करने के लिए घोषित किया जाता है, परन्तु जिसके लिए कोई कार्यान्वयन प्रदान नहीं किया जाता है।
 * एब्सट्रैक्ट प्रकार से प्रकृति (कंप्यूटर विज्ञान) द्वारा, और कक्षा की परिभाषा को पूरा करने के लिए आवश्यक सभी अनुपस्थित सुविधाओं को ओवरराइड नहीं करना होता है | दूसरे शब्दों में, चाइल्ड प्रकार जो अपने मूल से सभी एब्सट्रैक्ट विधियों को क्रियान्वित नहीं करता है, वह एब्सट्रैक ही बन जाता है।
 * स्मॉलटाक जैसी कई गतिशील रूप से टाइप की गई भाषाओं में, कोई भी क्लासेस जो इस (कंप्यूटर विज्ञान) को विशेष विधि भेजता है, परन्तु उस विधि को क्रियान्वित नहीं करता है, उसे एब्सट्रैक्ट माना जा सकता है। (चूँकि, ऐसी कई भाषाओं में, जैसे आब्जेक्टिव-C, त्रुटि का पता तब तक नहीं चलता जब तक कि क्लासेस का उपयोग नहीं किया जाता है, और संदेश का परिणाम अपवाद त्रुटि संदेश होता है जैसे कि चयनकर्ता को नहीं पहचान: xxx as  अक्रियान्वित विधि का पता लगाने पर क्रियान्वित किया जाता है)।

एब्सट्रैक्ट प्रकारों का प्रयोग
स्थिर टाइपिंग ओपिपि भाषाओं में एब्सट्रैक्ट प्रकार एक महत्वपूर्ण विशेषता है। कई गतिशील टाइपिंग भाषाओं में कोई समतुल्य सुविधा नहीं होती है (चूँकि डक टाइपिंग का उपयोग एब्सट्रैक्ट प्रकार को अनावश्यक बनाता है); चूँकि विशेषता (कंप्यूटर प्रोग्रामिंग) कुछ आधुनिक गतिशील रूप से टाइप की गई भाषाओं में पाई जाती है।

कुछ लेखकों का तर्क है कि लीफ क्लासेस (प्रोग्रामिंग भाषा) होनी चाहिए (कोई उपप्रकार नहीं है), या फिर एब्सट्रैक्ट होना चाहिए। एब्सट्रैक्ट प्रकार इस स्थिति में उपयोगी हैं कि उनका उपयोग प्रोटोकॉल (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) को परिभाषित करने और क्रियान्वित करने के लिए किया जा सकता है; संचालन का सेट जो प्रोटोकॉल को क्रियान्वित करने वाली सभी ऑब्जेक्ट का समर्थन करना चाहिए।

एब्सट्रैक्ट प्रकार भी टेम्पलेट_मेथड_पैटर्न का एक अनिवार्य भाग हैं।

यह भी देखें

 * वर्ग (कंप्यूटर प्रोग्रामिंग)
 * संकल्पना (जेनेरिक प्रोग्रामिंग)
 * वर्ग टाइप करें

अग्रिम पठन

 * Core Java: An Integrated Approach by R. Nageswara Rao
 * Core Java: An Integrated Approach by R. Nageswara Rao

बाहरी संबंध

 * "Abstract or Skeletal Interfaces Explained"
 * Types and Programming Languages by Benjamin Pierce (MIT Press 2002)
 * Abstract type at Rosetta Code

Klass (programmering)