अॅब्स्ट्रक्ट क्लास आणि इंटरफेसमध्ये सी # मधील फरक.

Anonim

सारखा एक अमूर्त वर्ग इंटरफेस सारखा खूप दिसत आहे, परंतु ओपीच्या सुरुवातीच्या दृष्टीने संकल्पना थोडा गोंधळ आहे. संकल्पनात्मकदृष्ट्या, एक अमूर्त वर्ग कोणत्याही अंमलबजावणीशिवाय, अर्थातच इंटरफेस प्रमाणेच दिसतो, तथापि त्यांच्यात भेदांचा योग्य वाटा असतो. एक गोषवारा वर्ग अंशतः किंवा पूर्णपणे अंमलबजावणी होऊ शकतो, तरी इंटरफेस पूर्णपणे लागू केला जाणे आवश्यक आहे. दोन्ही बाजूंमधील सर्वात लक्षणीय फरक हा आहे की एक अमूर्त वर्ग मुलभूत अंमलबजावणी करू शकतो, तर एक इंटरफेस फक्त अशा पद्धतींची परिभाषा आहे ज्यात केवळ सदस्य घोषणा समाविष्ट आहे. चला तर दोन्हीच्या सैद्धांतिक पैलूंवर तपशीलवार चर्चा करूया.

अॅब्स्ट्रक्ट क्लास म्हणजे काय?

एक अमूर्त वर्ग हा एक विशेष प्रकारचा वर्ग आहे जो इतर वर्गांचा आधार म्हणून कार्य करतो आणि तत्काल चालू शकत नाही. अॅमस्ट्रॅक्ट क्लासच्या अंमलबजावणी तर्कशाखा त्याच्या उत्तीर्ण वर्गांद्वारे प्रदान करण्यात आली आहेत. वर्ग सारख बनवण्यासाठी, "गोषवारा" सुधारक वापरला जातो ज्याचा अर्थ असा आहे की काही क्षुल्लक अंमलबजावणी कार्यान्वित करणे आवश्यक आहे. यात गोषवारा आणि अदृश्य दोन्ही सदस्यांचा समावेश आहे. एक ऍमस्ट्रॅक्ट क्लास मूलभूत कार्यक्षमता प्रदान करण्याच्या हेतूने आहे जो आणखी व्युत्पन्न क्लासेसद्वारे पुढील सामायिक आणि अधिलिखित करता येऊ शकतो. कोड अनुलिपण कोणत्याही प्रकारचे टाळण्यासाठी हे उपयुक्त आहे. ते इंटरफेस सारखे खूप दिसत आहेत परंतु जोडलेल्या कार्यक्षमतेसह.

इंटरफेस म्हणजे काय?

दुसरीकडे, एक परस्परसंवाद, वर्गामध्ये नाही ज्यामध्ये फंक्शनॅलिटीचे केवळ स्वाक्षरी असते. हे अंमलबजावणी न करता एक नमुना आहे कल्पनाशिलतेने, सदस्यांची घोषवाक्य असलेल्या पद्धतींची ही केवळ व्याख्या आहे. ही एक रिक्त शेल आहे जी त्याच्या सदस्यांची अंमलबजावणी करत नाही. हे एका अमूर्त बेस क्लासमसारखे आहे जे केवळ अमूर्त सदस्य जसे की पद्धती, इव्हेंट्स, इंडेक्सर्स, गुणधर्म इत्यादी समाविष्ट करते. ते थेट इन्स्टिट्यूएशन होऊ शकत नाहीत आणि कोणत्याही सदस्याद्वारे त्याचे सदस्य लागू करता येत नाहीत. याव्यतिरिक्त, क्लासद्वारे एकापेक्षा जास्त इंटरफेस लागू केले जाऊ शकतात, तथापि, एक क्लास केवळ एकच क्लासचे वारस करू शकतो.

अॅबस्ट्रॅक्ट क्लास बनाम इंटरफेस: ए सारल क्लास आणि इंटरफेसमध्ये सी # मध्ये विविधता आढळते.

  1. एकाधिक वारसा - एक क्लास फक्त एक अमूर्त वर्ग वापरू शकतो, त्यामुळे बहुविध वारसा समर्थित नाही. दुसरीकडे, एक इंटरफेस बहुविध वारसाहक्कांना पाठिंबा देऊ शकतो, याचा अर्थ असा की एखाद्या श्रेणीतून कितीही वारसा मिळू शकतात.
  2. परिभाषा पैकी सारखा वर्ग आणि इंटरफेस C # मध्ये - एक अमूर्त वर्ग एक विशेष प्रकारचे वर्ग आहे ज्यामध्ये अंमलबजावणीची कोणतीही व्याख्या नाही. अंमलबजावणी लॉजिक त्याच्या उत्तीर्ण वर्गांद्वारे प्रदान केले आहे. यात अमूर्त आणि अ-अमूर्त पद्धतीही असू शकतात.दुसरीकडे, इंटरफेस हा एक नमुना आहे जो काहीच करु शकत नाही. तांत्रिकदृष्ट्या, हे फक्त एक रिक्त शेल आहे
  3. अंमलबजावणी < - एक अमूर्त वर्ग मध्ये परिभाषा आणि तिचे अंमलबजावणी दोन्ही असू शकतात. हा एक अपूर्ण वर्ग आहे जो तत्काळ होऊ शकत नाही. इंटरफेसमध्ये कोणत्याही कोडशिवाय कार्यक्षमतेचे स्वामित्व असू शकते.
  4. प्रवेश मॉडिअर्स - एक अमूर्त वर्गमध्ये अनेक सुलभ संशोधक जसे की subs, functions, properties, इत्यादी असू शकतात, व इंटरफेसमध्ये प्रवेश मॉडिफायर्स असणे आवश्यक नाही आणि सर्व पद्धतींना सामान्यपणे सार्वजनिक म्हणून परिभाषित करणे आवश्यक आहे एकजिनसीपणा < - एक अमूर्त वर्ग समान प्रकार, वर्तणूक आणि स्थितीच्या कार्यान्वयन करिता वापरला जातो, तर इंटरफेस लागू करण्याकरिता वापरला जातो जो केवळ पद्धत स्वाक्षर्या सामायिक करतात.
  5. घोषणापत्र < - एक अमूर्त वर्ग इतर सर्व वर्गांसाठी आधार वर्ग म्हणून कार्य करतो जेणेकरून इंटरफेस कोणत्याही वेरिएबल्स घोषित करण्याची परवानगी नसल्यास ते घोषित किंवा वापरता येईल. कन्स्ट्रक्टर घोषणापत्र < - एक अमूर्त वर्ग कंत्राटदार घोषणापत्र असू शकतो, परंतु इंटरफेसमध्ये कन्स्ट्रक्टर घोषणापत्र असू शकत नाही.
  6. कोर बनाम परिधीय < - एक अमूर्त वर्ग एक क्लासची कोर ओळख परिभाषित करण्यासाठी वापरला जातो आणि समान डेटा प्रकाराच्या ऑब्जेक्टसाठी वापरला जाऊ शकतो. दुसरीकडे, एखाद्या वर्गाची परिघीय क्षमता परिभाषित करण्यासाठी इंटरफेसचा वापर केला जातो. कठोर वि. अपली < - किमान एक विकसकांच्या दृष्टीकोणातून, एक अमूर्त वर्ग कार्यक्षमतेच्या दृष्टीने अधिक लवचीक आहे, तर एक इंटरफेस अधिक कठोर आहे.
  7. अॅबस्ट्रॅक्ट क्लास वि. इंटरफेस: टेबल फॉर्म अॅबस्ट्रॅक्ट क्लास < इंटरफेस
  8. अॅम्प्लॅक्ट क्लासमध्ये सभासद घोषणेचे कार्य, सब्स आणि प्रॉपर्टीजसाठी सर्व प्रवेश मॉडिफायर्स असू शकतात. फंक्शन्स, सबस, प्रॉपर्टीज इ. च्या सदस्यांच्या घोषणेसाठी इंटरफेसमध्ये प्रवेश मॉडिफायर्स असणे अनुमत नाही. सर्व सदस्यांना पोकळ सार्वजनिक म्हणून असे गृहित धरले जाते.
  9. श्रेणी सर्वात जास्त वापर करून केवळ एक अमूर्त वर्ग असू शकतात. एखाद्या श्रेणीला कोणत्याही प्रकारच्या इंटरफेसचा वारसा असतो.

अमूर्त क्लासमध्ये एकाधिक वारसा समर्थित नाही.

एक इंटरफेस एकाधिक वारसास समर्थन देऊ शकते.

तांत्रिकदृष्ट्या, हा एक वर्ग आहे ज्यामध्ये परिभाषा आणि तिचे अंमलबजावणी दोन्ही असू शकतील किंवा नसतील.

इंटरफेसमध्ये फंक्शनॅलिटीची स्वाक्षरी फक्त असू शकते त्यामुळे ती मुळात एक रिक्त शेल आहे. एक अमूर्त वर्ग सदस्य असू शकतात consts, परिभाषित पद्धती, आणि पद्धत stubs. < इंटरफेसमध्ये फक्त पद्धती आणि कंसा असू शकतात
ते एका क्लासमधील कोर ओळख परिभाषित करते आणि त्याच डेटा प्रकाराच्या ऑब्जेक्ट्सचे वर्णन करण्यासाठी वापरले जाते. हा वर्गांच्या परिधीय क्षमतांचे वर्णन करण्यासाठी वापरला जातो.
जोपर्यंत संपूर्ण सदस्य नाही तोपर्यंत अमूर्त वर्गांचे सदस्य स्थिर असू शकत नाहीत. इंटरफेसचे सदस्य स्थिर नसू शकतात.
समान प्रकारचे आणि सामान्य वागणुकीच्या वापरासाठी हे आदर्श आहे. अनेक अंमलबजावणी केवळ पद्धत हस्ताक्षर सामायिक केल्यास इंटरफेस वापरणे चांगले.
त्यामध्ये कन्स्ट्रक्टर घोषणापत्र असू शकते. त्या कन्स्ट्रक्टरची घोषणा होऊ शकत नाही.
एक अमूर्त वर्गाने पूर्व-परिभाषित केलेले फील्ड आणि कॉन्स्टेंट्स आहेत. फील्ड इंटरफेसमध्ये परिभाषित केल्या जाऊ शकत नाहीत.
त्यामध्ये सवयी आणि अ-अमूर्त दोन्ही पद्धती असू शकतात. त्यात केवळ अमूर्त पद्धती असू शकतात.
सारांश < अमूर्त वर्ग आणि इंटरफेसमध्ये काय फरक आहे? हे कदाचित कोणत्याही तांत्रिक मुलाखतीत विचारले गेलेले सर्वात सामान्य प्रश्न आहे. आपण कोणत्याही C # ट्युटोरियलमध्ये अमूर्त क्लासेस आणि इंटरफेसेस बद्दल अधिक माहिती शोधण्याची शक्यता आहे, तथापि, यातील फरक समजून घेणे हे कठीण भाग आहे. आपण शोधू शकता अशी सर्व माहिती आपण संकलित करू शकता आणि तरीही पुरेसे मिळू शकत नाही विवेचनात्मकपणे दोन्ही प्रोग्रॅमिंगमधील सर्वात महत्त्वाच्या अटी आहेत आणि ते समान आहेत, तथापि, कार्यक्षमतेच्या दृष्टीने ते बरेच वेगळे आहेत. एक अमूर्त वर्ग हा एक विशेष प्रकारचा वर्ग असून तो इतर वर्गांसाठी आधार म्हणून कार्य करतो, दुसरीकडे, इंटरफेस, केवळ सदस्य घोषणांसह फक्त एक रिक्त शेल आहे <