वारसा आणि पॉलिमॉर्फिझममधील फरक

लेखक: Laura McKinney
निर्मितीची तारीख: 1 एप्रिल 2021
अद्यतन तारीख: 4 मे 2024
Anonim
वारसा आणि बहुरूपता यातील फरक | नवशिक्यांसाठी जावा ट्यूटोरियल भाग १३.
व्हिडिओ: वारसा आणि बहुरूपता यातील फरक | नवशिक्यांसाठी जावा ट्यूटोरियल भाग १३.

सामग्री


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

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

तुलना चार्ट

तुलनासाठी आधारवारसापॉलिमॉर्फिझम
मूलभूतआधीपासूनच विद्यमान वर्गाच्या गुणधर्मांचा वापर करुन वारसा नवीन वर्ग तयार करीत आहे.पॉलिमॉर्फिझम मुळात बहुविध फॉर्मसाठी एक सामान्य इंटरफेस आहे.
अंमलबजावणीमूळतः वर्गांवर वारसा लागू केला जातो.पॉलिमॉर्फिझम मुळात फंक्शन / पद्धतींवर लागू केले जाते.
वापराओओपीमध्ये पुन्हा प्रयोज्य करण्याच्या संकल्पनेचे समर्थन करण्यासाठी आणि कोडची लांबी कमी करते.कंपाईल वेळी (ओव्हरलोडिंग) तसेच रन टाइम (ओव्हरराइडिंग) करताना फंक्शनचे कोणते स्वरूप वापरावे हे ठरविण्यास ऑब्जेक्टला अनुमती देते.
फॉर्मवारसा हा एकच वारसा, एकाधिक वारसा, बहुस्तरीय वारसा, श्रेणीबद्ध वारसा आणि संकरित वारसा असू शकतो.पॉलीमॉर्फिझम एक कंपाईल टाईम पॉलिमॉर्फिझम (ओव्हरलोडिंग) किंवा रन-टाइम पॉलीमॉर्फिझम (ओव्हरराइडिंग) असू शकते.
उदाहरणटेबल फर्निचर असल्याने क्लास टेबल क्लास फर्निचरचे वैशिष्ट्य मिळवू शकते.क्लास स्टडी_टेबल मध्ये फंक्शन सेट_कोलर () देखील असू शकते आणि डाइनिंग_टेबल मध्ये फंक्शन सेट_कॉलोर () देखील असू शकतात, जेणेकरून सेट-कलर () चा फंक्शन कोणत्या प्रकारचा आहे याचा निर्णय दोन्ही संकलित वेळ आणि धावण्याच्या वेळेस घेता येईल.


वारसा व्याख्या:

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

वर्गाचा वारसा मिळण्याचे सामान्य रूप खालीलप्रमाणे आहेः

क्लास व्युत्पन्न-वर्ग-नाव: एक्सेस-स्पेसिफायर बेस-क्लास-नेम name // क्लासचे मुख्य भाग};

येथे specifक्सेस स्पेसिफायर बेस वर्गामधील सदस्यास व्युत्पन्न वर्गाकडे accessक्सेस (खाजगी, सार्वजनिक, संरक्षित) प्रदान करते. कोणताही प्रवेश निर्दिष्टकर्ता नसल्यास, डीफॉल्टनुसार, ते “खाजगी” असे मानले जाते. सी ++ मध्ये, व्युत्पन्न वर्ग "संरचित" असल्यास thenक्सेस निर्दिष्ट करणारा डीफॉल्टनुसार "सार्वजनिक" असतो.

सी ++ मध्ये, वारसा पाच स्वरूपात मिळवता येतो. त्यांचे वर्गीकरण असे केले जाऊ शकतेः -


  • एकल वारसा (फक्त एकच सुपर क्लास)
  • एकाधिक वारसा (अनेक सुपरक्लासेस)
  • श्रेणीबद्ध वारसा (एक सुपर वर्ग, बरेच उपवर्ग)
  • एकाधिक वारसा (साधित केलेल्या वर्गामधून घेतलेले)

जावामध्ये वर्ग “वर्गीकरण” हा कीवर्ड वापरुन दुसर्‍या वर्गाचा वारसा मिळवितो. जावामध्ये बेस क्लास सुपर क्लास म्हणून ओळखला जातो आणि व्युत्पन्न वर्गाला सबक्लास म्हणून संबोधले जाते. सबक्लास बेस क्लासमधील सदस्यांना प्रवेश देऊ शकत नाही, ज्यांना “खाजगी” घोषित केले जाते. जावा मध्ये क्लासचा वारसा मिळणारा सामान्य फॉर्म खालीलप्रमाणे आहे.

वर्ग व्युत्पन्न-वर्ग-नाम बेस-वर्ग-नाव s // वर्गाचे मुख्य भाग extend वाढवितो;

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

‘सुपर’ चे दोन सामान्य प्रकार आहेत. प्रथम हे सुपर क्लास च्या कन्स्ट्रक्टर कॉल करण्यासाठी वापरते. दुसरे म्हणजे सबक्लासच्या सदस्याने लपविलेले सुपरक्लासच्या सदस्यावर प्रवेश करणे.

// कन्स्ट्रक्टरला कॉल करण्याचा पहिला फॉर्म. वर्ग सपर_ क्लास {सपर_क्लास (युक्तिवाद_सूची) {..} // सुपर क्लासचे निर्माता const; वर्ग सब_क्लास सपर_ क्लास s सब_क्लास (वितर्क_सूची) वाढवितो {..} // सब_क्लास सुपरचे निर्माता (वितर्क_सूची); // सब_क्लास सुपर क्लासच्या कन्स्ट्रक्टरला कॉल करते}};

// सुपर क्लास सपर_क्लास second इंट i साठी सेकंद; sub वर्ग सब_क्लास सपर_क्लास {इंट i वाढवते; सब_क्लास (इंट अ, इंट बी). सुपर.आय = ए; // आय सुपर क्लास मी = बी; उप वर्गातील // मी //};

पॉलिमॉर्फिझम व्याख्या

पॉलीमॉर्फिझम या शब्दाचा अर्थ फक्त ‘एक कार्य, एकाधिक रूप’ असा आहे. पॉलीमॉर्फिझम संकलित वेळ आणि धावण्याच्या वेळेवर प्राप्त केले जाते. कंपाईल टाईम पॉलिमॉर्फिझम “ओव्हरलोडिंग” द्वारे साध्य केले जाते, तर रनटाइम पॉलिमॉर्फिझम “ओव्हरराइडिंग” च्या माध्यमातून प्राप्त होते.

पॉलीमॉर्फिझम ऑब्जेक्टला "फंक्शनचा कोणता फॉर्म वापरला जातो तेव्हा" कोणता वेळ आणि रन टाइम संकलित करतो हे ठरविण्यास परवानगी देतो.
चला ओव्हरलोडिंगच्या पहिल्या संकल्पनेवर चर्चा करूया. ओव्हरलोडिंगमध्ये, आम्ही वर्गात फंक्शन एकापेक्षा जास्त वेळा वेगवेगळ्या, डेटा प्रकार आणि पॅरामीटर्ससह परिभाषित करतो, तर ओव्हरलोड करण्याच्या कार्यामध्ये समान रिटर्न प्रकार असणे आवश्यक आहे. बहुतेक वेळा ओव्हरलोड केलेल्या फंक्शन्स क्लासचे कन्स्ट्रक्टर असतात.

वर्ग ओव्हरलोड {इंट अ, बी; सार्वजनिक: इंट ओव्हरलोड (इंट एक्स) {// प्रथम ओव्हरलोड () कन्स्ट्रक्टर ए = एक्स; रिटर्न ए; over इंट ओव्हरलोड (इंट एक्स, इंट वाय) {// सेकंड ओव्हरलोड () कन्स्ट्रक्टर ए = एक्स; b = y; परत एक * बी; }}; इंट मेन () {ओव्हरलोड ओ 1; ओ 1.ओव्हरलोड (20); // प्रथम ओव्हरलोड () कन्स्ट्रक्टर कॉल ओ 1.ओव्हरलोड (20,40); // सेकंड ओव्हरलोड () कन्स्ट्रक्टर कॉल}

आता, पॉलीमॉर्फिझमच्या दुस form्या स्वरूपावर म्हणजेच ओव्हरराइडिंगबद्दल चर्चा करूया. अधिलिखित करण्याची संकल्पना केवळ वर्गाच्या कार्यावर लागू केली जाऊ शकते जे वारसा संकल्पना देखील अंमलात आणते. सी ++ मध्ये फंक्शन अधिलिखित केले जाण्यापूर्वी बेस वर्गामधील “व्हर्च्युअल” कीवर्डद्वारे “व्हर्च्युअल” कीवर्ड वगळता त्याच प्रोटोटाइपसह व्युत्पन्न वर्गात पुन्हा परिभाषित केले जाते.

क्लास बेस {सार्वजनिक: व्हर्च्युअल शून्य फंक्ट () base // बेस क्लास कॉटचे व्हर्च्युअल फंक्शन << "हे बेस क्लासेस फंक्ट () आहे; }}; क्लास डेरिव्ह्ड 1: पब्लिक बेस {पब्लिक: शून्य फंक्ट () {// बेस वर्गाचे व्हर्च्युअल फंक्शन डेरिव्ह्ड 1 क्लास कॉउटमध्ये पुन्हा परिभाषित केले गेले << "ही एक डेरिव्ह्ड 1 क्लास फंट ()" आहे; }}; इंट मेन () {बेस * पी, बी; व्युत्पन्न 1 डी 1; * पी = & बी; पी-> फण्ट (); // बेस क्लास फंक्ट वर कॉल (). * पी = & डी 1; रिटर्न 0; }

  1. वारसा हा एक वर्ग तयार करीत आहे जो आधीपासूनच विद्यमान वर्गाकडून त्याचे वैशिष्ट्य मिळवितो. दुसरीकडे, पॉलिमॉर्फिझम एक इंटरफेस आहे ज्याची व्याख्या एकाधिक फॉर्ममध्ये केली जाऊ शकते.
  2. वर्गांवर वारसा लागू केला जातो तर बहुपत्नीय पद्धती / कार्ये यावर लागू केली जाते.
  3. वारसा मूलभूत वर्गात परिभाषित केलेले घटक आणि पद्धती वापरण्यास व्युत्पन्न वर्गास अनुमती देते म्हणून व्युत्पन्न वर्गाने त्या घटकांची किंवा पद्धतीची पुन्हा व्याख्या करण्याची आवश्यकता नाही, म्हणून आपण कोडची पुन्हा उपयोगिता वाढवू शकतो आणि म्हणूनच कोडची लांबी कमी करू शकतो. . दुसरीकडे, बहुसुलभता एखाद्या ऑब्जेक्टला कंपाईल वेळ आणि रन टाइम दोन्ही प्रकारची कोणत्या पद्धतीची इच्छा आहे हे ठरविणे शक्य करते.
  4. वारसा एकल वारसा, एकाधिक वारसा, बहुस्तरीय वारसा, श्रेणीबद्ध वारसा आणि संकरित वारसा म्हणून वर्गीकृत केले जाऊ शकते. दुसरीकडे, पॉलिमॉर्फिझमला ओव्हरलोडिंग आणि ओव्हरराइडिंग म्हणून वर्गीकृत केले जाते.

निष्कर्ष:

इनहेरिटन्स आणि पॉलिमॉर्फिझम परस्परसंबंधित संकल्पना आहेत, कारण डायनॅमिक पॉलिमॉर्फिझम वर्गास लागू होते जे वारशाची संकल्पना देखील लागू करतात.