जावा आणि सी मध्ये इंटरफेस आणि अ‍ॅबस्ट्रॅक्ट क्लास दरम्यान फरक

लेखक: Laura McKinney
निर्मितीची तारीख: 1 एप्रिल 2021
अद्यतन तारीख: 3 जुलै 2024
Anonim
अ‍ॅबस्ट्रॅक्ट क्लासेस वि इंटरफेस (जावा)
व्हिडिओ: अ‍ॅबस्ट्रॅक्ट क्लासेस वि इंटरफेस (जावा)

सामग्री


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

  1. तुलना चार्ट
  2. व्याख्या
  3. मुख्य फरक
  4. निष्कर्ष

तुलना चार्ट

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


इंटरफेस व्याख्या

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

इंटरफेस हा एक शुद्ध अमूर्त वर्ग आहे. इंटरफेस तयार करण्यासाठी वापरलेला कीवर्ड म्हणजे “इंटरफेस”. कारण इंटरफेसमधील सर्व पद्धत पूर्णपणे अमूर्त आहे. इंटरफेस केवळ वर्गाने काय करावे हे निर्दिष्ट करते परंतु ते ते कसे करते हे परिभाषित करत नाही. इंटरफेसमध्ये घोषित सर्व पद्धती अमूर्त असल्यामुळे इंटरफेससाठी कोणतीही घटना तयार केली जात नाही. जावा मध्ये "इंटरफेस" चे सामान्य रूप असे आहे:


एक्सेस_ स्पेसिफायर इंटरफेस इंटरफेस_नाव {रिटर्न-प्रकार मेथड-नेम 1 (पॅरामीटर-लिस्ट); रिटर्न-टाइप मेथड-नेम 2 (पॅरामीटर-लिस्ट); प्रकार अंतिम-प्रकार 1 = मूल्य; प्रकार अंतिम-प्रकार 2 = मूल्य; // ... रिटर्न-टाइप मेथड-नेम एन (पॅरामीटर-लिस्ट); प्रकार अंतिम-वर्णनाव = मूल्य; }

Specifक्सेस स्पेसिफायर सार्वजनिक घोषित केले कारण वर्गाला इंटरफेस लागू करण्याची आवश्यकता आहे.

आमच्याकडे सी ++ मध्ये “इंटरफेस” ही संकल्पना नाही. परंतु, जावा आणि सी # इंटरफेस खूप चांगले परिभाषित करतात.

जावा मध्ये इंटरफेस:

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

जावा मध्ये इंटरफेस लागू करण्याचे सामान्य स्वरूपः

वर्ग वर्ग_नाव इंटरफेस_नाव ments // वर्ग-शरीर imple लागू करते

इंटरफेसचा वारसा मिळवण्यासाठी वर्ग “की अवजारे” हा कीवर्ड वापरतो आणि क्लास वारसा इंटरफेसद्वारे घोषित केलेल्या सर्व पद्धती लागू करतो.

सी # मधील इंटरफेस:

सी # मधील इंटरफेस जावा मधील इंटरफेससारखे जवळजवळ समान आहेत:

  • सी # मधील इंटरफेस चल घोषित करीत नाही.
  • इंटरफेसचे नाव आधीच्या भांडवलासह उपयोजित असते आणि त्याला कोलन (:) चिन्ह दिले जाते.

सी # मध्ये इंटरफेस लागू करण्याचा सामान्य प्रकार:

वर्ग वर्ग_नाव: इंटरफेस_नाव class // वर्ग-मुख्य}

अ‍ॅबस्ट्रॅक्ट क्लासची व्याख्या

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

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

अमूर्त वर्ग वर्ग_नाव st अमूर्त पद्धत_नाव 1 (); अमूर्त पद्धत_नाव 2 (); : रिटर्न_टाइप मेथड_नाव ((पॅरामीटर_लिस्ट) {// कंक्रीट मेथड} रिटर्न_टाइप मेथड_नाव 4 (पॅरामीटर_लिस्ट) {// कॉंक्रिट मेथड}};

अमूर्त वर्गाची संकल्पना जावा आणि सी # दोन्हीमध्ये समान आहे. अ‍ॅबस्ट्रॅक्ट वर्ग सी ++ मध्ये थोडा वेगळा आहे.

सी ++ मध्ये वर्गात किमान एक व्हर्च्युअल फंक्शन असल्यास वर्ग एक गोषवारा वर्ग बनतो. “अ‍ॅबस्ट्रॅक्ट” कीवर्डऐवजी “व्हर्च्युअल” कीवर्ड अमूर्त पद्धत घोषित करण्यासाठी वापरला जातो.

  1. जेव्हा आपल्याला "आवश्यक आहे" परंतु "ते कसे लागू केले जाईल" याबद्दलचे ज्ञान नसते तेव्हा इंटरफेस वापरणे आवश्यक आहे. दुसरीकडे, आपल्याला काय आवश्यक आहे हे माहित असल्यास आणि अंमलबजावणी कशी होईल याची अंशतः माहिती असल्यास एक अमूर्त वर्ग वापरा.
  2. इंटरफेसमध्ये त्याच्या सर्व पद्धती अमूर्त असतात परंतु, अ‍ॅबस्ट्रॅक्ट क्लासमध्ये काही अमूर्त पद्धती आणि काही ठोस पद्धती असतात.
  3. इंटरफेसमधील पद्धती सार्वजनिक आणि अमूर्त असतात, म्हणून याला शुद्ध अमूर्त वर्ग देखील म्हणतात. दुसरीकडे, अ‍ॅबस्ट्रॅक्टमध्ये असलेल्या पद्धती केवळ सार्वजनिक आणि अमूर्त करण्यासाठी मर्यादित नाहीत.
  4. एक इंटरफेस पद्धत कधीही खाजगी, संरक्षित, अंतिम, स्थिर, सिंक्रोनाइझ, नेटिव्ह किंवा स्ट्राइकपीपी असू शकत नाही. दुसरीकडे, अमूर्त वर्गाच्या पद्धतींवर कोणतेही बंधन नाही.
  5. इंटरफेसमधील व्हेरिएबल्स सार्वजनिक आणि अंतिम असतात आम्ही ते घोषित करतो की नाही, तरीही अ‍ॅबस्ट्रॅक्ट वर्गाच्या व्हेरिएबल्सला केवळ सार्वजनिक आणि अंतिम असे कोणतेही बंधन नाही.
  6. इंटरफेसमधील चल कधीही खाजगी संरक्षित क्षणिक किंवा अस्थिर असू शकत नाहीत, परंतु अ‍ॅबस्ट्रॅक्ट क्लासमध्ये व्हेरिएबल्सवर कोणतेही बंधन नसते.
  7. इंटरफेसचे व्हेरिएबल घोषणेदरम्यान आरंभ करणे आवश्यक आहे. दुसरीकडे, अ‍ॅबस्ट्रॅक्ट क्लासमधील चल कधीही सुरू करता येऊ शकतात.
  8. इंटरफेसच्या आत, एखादा घटना किंवा स्थिर ब्लॉक घोषित केला जाऊ शकत नाही परंतु, आपण अ‍ॅबस्ट्रॅक्ट क्लासमध्ये उदाहरण किंवा स्थिर ब्लॉक घोषित करू शकता.
  9. आपण इंटरफेसमध्ये कन्स्ट्रक्टर परिभाषित करू शकत नाही, तर आपण एबस्ट्रॅक्ट क्लास मध्ये कन्स्ट्रक्टर डिफाईन करू शकता.

निष्कर्ष:

जेव्हा आपल्याला बेस क्लास तयार करण्याची आवश्यकता असते ज्यामध्ये पद्धतींचे सामान्यीकृत प्रकार असतात जे व्युत्पन्न वर्गाद्वारे त्यांच्या आवश्यकतेनुसार अंमलात आणल्या जाऊ शकतात तेव्हा इंटरफेस आणि अ‍ॅबस्ट्रॅक्ट क्लास ही संकल्पना तसे करण्यास मदत करते.