सार प्रकार

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

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

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

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

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

सार प्रकार भी Template_method_pattern का एक अनिवार्य हिस्सा हैं।

यह भी देखें

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

अग्रिम पठन

 * 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)