NoteTube

Classes and Objects in Java OOPS | Constructor Overloading, Methods and this Keyword Java in Hindi
1:00:21

Classes and Objects in Java OOPS | Constructor Overloading, Methods and this Keyword Java in Hindi

Anuj Kumar Sharma

7 chapters6 takeaways14 key terms5 questions

Overview

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

How was this?

Save this permanently with flashcards, quizzes, and AI chat

Chapters

  • रियल-वर्ल्ड की चीजों को प्रोग्रामिंग में दर्शाने के लिए ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOPs) का उपयोग किया जाता है।
  • हर ऑब्जेक्ट की अपनी प्रॉपर्टीज (विशेषताएं) और बिहेवियर (कार्य) होते हैं।
  • क्लास एक ब्लूप्रिंट की तरह है जो परिभाषित करती है कि ऑब्जेक्ट में क्या प्रॉपर्टीज और बिहेवियर होंगे।
  • ऑब्जेक्ट क्लास का एक इंस्टेंस (उदाहरण) होता है जिसमें वे प्रॉपर्टीज और बिहेवियर होते हैं।
क्लासेस और ऑब्जेक्ट्स OOPs के बिल्डिंग ब्लॉक्स हैं, जो आपको रियल-वर्ल्ड की समस्याओं को मॉडल करने और कोड को व्यवस्थित करने की अनुमति देते हैं।
एक 'डॉग' क्लास को प्रॉपर्टीज जैसे नाम, उम्र और बिहेवियर जैसे 'वॉक' और 'बार्क' के साथ परिभाषित किया गया है। फिर 'डॉग' क्लास से 'd1' और 'd2' जैसे अलग-अलग ऑब्जेक्ट बनाए जाते हैं, जिनमें अपनी विशिष्ट प्रॉपर्टीज हो सकती हैं।
  • एक जावा फाइल में कई क्लासेस बनाई जा सकती हैं, लेकिन केवल एक क्लास 'पब्लिक' हो सकती है और उसका नाम फाइल के नाम से मेल खाना चाहिए।
  • क्लास के अंदर प्रॉपर्टीज को वेरिएबल्स के रूप में और बिहेवियर को मेथड्स (फंक्शंस) के रूप में परिभाषित किया जाता है।
  • ऑब्जेक्ट बनाने के लिए 'new' कीवर्ड का उपयोग किया जाता है, और ऑब्जेक्ट क्लास का एक नॉन-प्रिमिटिव डेटा टाइप इंस्टेंस होता है।
यह समझना कि कोड में क्लासेस और ऑब्जेक्ट्स कैसे बनाए जाते हैं, आपको अपने स्वयं के डेटा स्ट्रक्चर्स और लॉजिक को परिभाषित करने में सक्षम बनाता है।
एक 'डॉग' क्लास बनाई गई जिसमें 'name', 'age', 'color' प्रॉपर्टीज और 'walk()', 'bark()' मेथड्स हैं। फिर 'main' मेथड में 'Dog d1 = new Dog();' का उपयोग करके 'डॉग' का ऑब्जेक्ट बनाया गया।
  • क्लास को मेमोरी में लोड किया जाता है लेकिन हीप या स्टैक मेमोरी में एलोकेट नहीं किया जाता; यह 'मेटास्पेस' में स्टोर होता है।
  • ऑब्जेक्ट्स को हीप मेमोरी में एलोकेट किया जाता है जब उन्हें 'new' कीवर्ड का उपयोग करके बनाया जाता है।
  • क्लास एक लॉजिकल एंटिटी है, जबकि ऑब्जेक्ट एक फिजिकल एंटिटी है जिसके साथ आप सीधे इंटरैक्ट कर सकते हैं।
मेमोरी में क्लासेस और ऑब्जेक्ट्स कैसे स्टोर होते हैं, यह जानने से आपको मेमोरी मैनेजमेंट और प्रोग्राम के परफॉरमेंस को समझने में मदद मिलती है।
क्लास 'डॉग' मेटास्पेस में स्टोर होती है, जबकि 'd1' और 'd2' जैसे ऑब्जेक्ट्स हीप मेमोरी में अलग-अलग मेमोरी लोकेशन पर स्टोर होते हैं, जिन्हें रेफरेंस द्वारा एक्सेस किया जाता है।
  • क्लासेस का उपयोग कस्टम डेटा टाइप्स बनाने के लिए किया जा सकता है, जो प्री-डिफाइंड डेटा टाइप्स की तरह काम करते हैं।
  • एक क्लास में डेटा (प्रॉपर्टीज) और बिहेवियर (मेथड्स) को एक साथ ग्रुप किया जा सकता है।
  • उदाहरण के लिए, एक 'कॉम्प्लेक्स' क्लास रियल और इमेजिनरी पार्ट को स्टोर करने और उन्हें प्रिंट करने के लिए बनाई गई थी।
कस्टम डेटा टाइप्स बनाने की क्षमता आपको अधिक जटिल डेटा स्ट्रक्चर्स को मॉडल करने और प्रोग्राम की पठनीयता और कार्यक्षमता में सुधार करने की अनुमति देती है।
एक 'कॉम्प्लेक्स' क्लास बनाई गई जिसमें 'a' (रियल पार्ट) और 'b' (इमेजिनरी पार्ट) प्रॉपर्टीज थीं, और एक 'print()' मेथड था जो 'a + bi' फॉर्मेट में कॉम्प्लेक्स नंबर को प्रिंट करता था।
  • मेथड ओवरलोडिंग आपको एक ही क्लास में समान नाम वाले कई मेथड्स बनाने की अनुमति देता है, बशर्ते उनके पैरामीटर्स (संख्या या प्रकार) अलग-अलग हों।
  • रिटर्न टाइप को बदलने से मेथड ओवरलोडिंग प्राप्त नहीं होती है; पैरामीटर्स में अंतर आवश्यक है।
  • जावा रनटाइम पर पैरामीटर्स के आधार पर सही मेथड का चयन करता है।
मेथड ओवरलोडिंग कोड को अधिक लचीला और पठनीय बनाती है, जिससे आप विभिन्न इनपुट के लिए एक ही ऑपरेशन को विभिन्न तरीकों से हैंडल कर सकते हैं।
एक 'ग्रीटिंग्स' मेथड को बिना पैरामीटर के (जैसे 'हेलो गुड मॉर्निंग') और एक स्ट्रिंग पैरामीटर के साथ (जैसे 'हेलो [नाम] गुड मॉर्निंग') ओवरलोड किया गया था। जावा कॉल के दौरान पास किए गए आर्गुमेंट्स के आधार पर सही मेथड चुनता है।
  • कंस्ट्रक्टर एक विशेष मेथड है जिसका नाम क्लास के नाम के समान होता है और इसका कोई रिटर्न टाइप नहीं होता है।
  • कंस्ट्रक्टर का उपयोग ऑब्जेक्ट बनाते समय उन्हें इनिशियलाइज करने के लिए किया जाता है।
  • यदि कोई कंस्ट्रक्टर परिभाषित नहीं किया गया है, तो जावा एक डिफ़ॉल्ट कंस्ट्रक्टर प्रदान करता है जो इंस्टेंस वेरिएबल्स को डिफ़ॉल्ट वैल्यूज के साथ इनिशियलाइज करता है।
  • कंस्ट्रक्टर को ओवरलोड किया जा सकता है (अलग-अलग पैरामीटर्स के साथ समान नाम वाले कई कंस्ट्रक्टर बनाना)।
कंस्ट्रक्टर यह सुनिश्चित करते हैं कि ऑब्जेक्ट्स सही प्रारंभिक मानों के साथ बनाए जाएं, जो प्रोग्राम की स्थिरता और सही कार्यप्रणाली के लिए महत्वपूर्ण है।
एक 'कॉम्प्लेक्स' क्लास में एक कंस्ट्रक्टर बनाया गया जो रियल और इमेजिनरी पार्ट को पैरामीटर के रूप में लेता है, जिससे ऑब्जेक्ट बनाते समय ही उनकी वैल्यू सेट की जा सके (जैसे 'new Complex(2, 3)')। एक और कंस्ट्रक्टर केवल एक पैरामीटर के साथ ओवरलोड किया गया था।
  • 'this' कीवर्ड का उपयोग वर्तमान ऑब्जेक्ट को संदर्भित करने के लिए किया जाता है, विशेष रूप से मेथड या कंस्ट्रक्टर के अंदर।
  • यह मेथड पैरामीटर्स और क्लास इंस्टेंस वेरिएबल्स के बीच के एम्बिगुइटी (अस्पष्टता) को दूर करने में मदद करता है।
  • 'this' का उपयोग उसी क्लास के अन्य मेथड्स या कंस्ट्रक्टर्स को कॉल करने के लिए भी किया जा सकता है।
'this' कीवर्ड आपको वर्तमान ऑब्जेक्ट के संदर्भ को स्पष्ट रूप से प्रबंधित करने की अनुमति देता है, जिससे कोड की स्पष्टता और कार्यक्षमता बढ़ती है।
कंस्ट्रक्टर में 'this.a = real;' का उपयोग यह स्पष्ट करने के लिए किया गया कि क्लास के इंस्टेंस वेरिएबल 'a' को मेथड पैरामीटर 'real' की वैल्यू असाइन की जा रही है। 'this.print()' का उपयोग वर्तमान ऑब्जेक्ट के 'print' मेथड को कॉल करने के लिए किया गया।

Key takeaways

  1. 1जावा में, क्लासेस ब्लूप्रिंट हैं और ऑब्जेक्ट्स उन ब्लूप्रिंट के वास्तविक उदाहरण हैं, जिनमें प्रॉपर्टीज और बिहेवियर होते हैं।
  2. 2क्लासेस कोड को व्यवस्थित करने और रियल-वर्ल्ड की अवधारणाओं को मॉडल करने के लिए आवश्यक हैं।
  3. 3ऑब्जेक्ट्स हीप मेमोरी में एलोकेट होते हैं, जबकि क्लासेस मेटास्पेस में स्टोर होती हैं।
  4. 4मेथड ओवरलोडिंग आपको विभिन्न पैरामीटर्स के साथ समान नाम वाले मेथड्स बनाने की सुविधा देती है, जिससे कोड अधिक लचीला बनता है।
  5. 5कंस्ट्रक्टर ऑब्जेक्ट बनाते समय उन्हें इनिशियलाइज करने के लिए महत्वपूर्ण हैं, और यदि परिभाषित न हों तो जावा एक डिफ़ॉल्ट कंस्ट्रक्टर प्रदान करता है।
  6. 6'this' कीवर्ड वर्तमान ऑब्जेक्ट को संदर्भित करता है और एम्बिगुइटी को दूर करने और अन्य मेथड्स/कंस्ट्रक्टर्स को कॉल करने में मदद करता है।

Key terms

ClassObjectBlueprintInstancePropertiesBehaviorsMethodVariableConstructorMethod Overloadingthis keywordHeap MemoryMetaspaceUser-defined data type

Test your understanding

  1. 1क्लास और ऑब्जेक्ट के बीच मुख्य अंतर क्या है और वे रियल-वर्ल्ड की समस्याओं को हल करने में कैसे मदद करते हैं?
  2. 2मेथड ओवरलोडिंग क्या है और यह कोड को कैसे अधिक कुशल बनाती है? क्या केवल रिटर्न टाइप बदलकर मेथड ओवरलोडिंग प्राप्त की जा सकती है?
  3. 3कंस्ट्रक्टर का उद्देश्य क्या है और यदि आप कोई कंस्ट्रक्टर नहीं बनाते हैं तो जावा क्या करता है?
  4. 4'this' कीवर्ड का उपयोग कब और क्यों किया जाता है, विशेष रूप से मेथड पैरामीटर्स और क्लास वेरिएबल्स के बीच एम्बिगुइटी को दूर करने के संदर्भ में?
  5. 5जावा में क्लासेस और ऑब्जेक्ट्स के लिए मेमोरी एलोकेशन कैसे काम करता है?

Turn any lecture into study material

Paste a YouTube URL, PDF, or article. Get flashcards, quizzes, summaries, and AI chat — in seconds.

No credit card required