"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > बहुरूपता क्या है? जावा में टाइप-ऑब्जेक्ट संबंधों की खोज

बहुरूपता क्या है? जावा में टाइप-ऑब्जेक्ट संबंधों की खोज

2024-12-21 को प्रकाशित
ब्राउज़ करें:576

जावा का अध्ययन करते समय, मुझे बहुरूपता की अवधारणा का सामना करना पड़ा। व्यावहारिक उपयोग में जाने से पहले मूलभूत सिद्धांतों को समझने की मेरी प्रवृत्ति है, इसलिए मैंने यहां अपनी व्याख्या का दस्तावेजीकरण किया है।

बहुरूपता की सामान्य व्याख्याएँ जो मैंने देखी हैं

बहुरूपता का मूल अर्थ "विविधता" है। हालाँकि, इस लेख के संदर्भ में, यह विभिन्न प्रकार की वस्तुओं को रखने के लिए एक चर की क्षमता को संदर्भित करता है, जब तक कि वर्ग विरासत या इंटरफ़ेस कार्यान्वयन के माध्यम से कोई त्रुटि उत्पन्न किए बिना संबंध होता है।

विशिष्ट प्रकार का मिलान

आम तौर पर, एक चर का प्रकार उसके द्वारा संदर्भित ऑब्जेक्ट के प्रकार से मेल खाता है।

Animal animal = new Animal();

हालाँकि, जब ऑब्जेक्ट किसी क्लास का विस्तार करता है, तो वेरिएबल को सुपरक्लास के प्रकार के रूप में माना जा सकता है।

Animal animal = new Dog(); // Dog extends Animal

इसके अलावा, यदि कोई ऑब्जेक्ट एक इंटरफ़ेस लागू करता है, तो इसे इंटरफ़ेस प्रकार के रूप में माना जा सकता है।

// Interface definition
interface Animal {
    void makeSound(); // Method in the interface
}

// Classes implementing the interface
class Dog implements Animal {
    public void makeSound() {
        System.out.println("Woof!"); // Dog-specific implementation
    }
}

class Cat implements Animal {
    public void makeSound() {
        System.out.println("Meow!"); // Cat-specific implementation
    }
}

// Main method
public class Main {
    public static void main(String[] args) {
        // Assign objects to variables of the interface type
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        // Call the interface method
        myDog.makeSound(); // Outputs "Woof!"
        myCat.makeSound(); // Outputs "Meow!"
    }
}

यह हमें लचीली कोडिंग को सक्षम करते हुए विभिन्न वर्गों को एक ही प्रकार से संभालने की अनुमति देता है।

एक प्रकार क्या है?

एक चर का प्रकार और एक वस्तु का प्रकार कैसे भिन्न होता है, इस पर चर्चा करते समय, यह सवाल उठता है: वास्तव में "प्रकार" क्या है? अपने विश्लेषण के आधार पर, मैंने निष्कर्ष निकाला है कि एक प्रकार निम्नलिखित उद्देश्यों को पूरा करता है:

  • घोषणा: निर्दिष्ट करती है कि मेमोरी क्षेत्र में किस प्रकार का डेटा संग्रहीत है।
  • प्रकार: यह बताता है कि संग्रहीत डेटा का उपयोग कैसे किया जाता है।

पहले के उदाहरण का संदर्भ देते हुए:

Animal animal = new Dog(); // Dog extends Animal

इसका तात्पर्य यह है कि मेमोरी डॉग के लिए आवंटित की गई है, लेकिन वेरिएबल सामग्री को एनिमल के रूप में व्याख्या करता है। इस अवधारणा को इस तरह देखा जा सकता है:

What Is Polymorphism? Exploring Type-Object Relations in Java

एक प्रकार फ़िल्टर लेंस की तरह कार्य करता है, जो यह निर्धारित करता है कि डेटा को कैसे देखा जाता है। लेंस को बदलकर, आप सुपरक्लास में सामान्य तरीकों या इंटरफेस के माध्यम से विशिष्ट तरीकों पर ध्यान केंद्रित कर सकते हैं।

हमेशा सुपरक्लास के साथ घोषणा क्यों नहीं की जाती?

किसी को आश्चर्य हो सकता है कि यदि बहुरूपता का लाभ सभी वर्गों में सामान्य तरीकों को संभालना है तो हम हमेशा सुपरक्लास के साथ वेरिएबल घोषित क्यों नहीं करते हैं। इसका कारण यह है कि ऐसे मामलों में मेमोरी केवल सुपरक्लास के डेटा के लिए आवंटित की जाती है।

What Is Polymorphism? Exploring Type-Object Relations in Java

हालाँकि एक उपवर्ग को एक सुपरक्लास (अपकास्टिंग) में डालना संभव है, लेकिन इसका विपरीत सत्य नहीं है। ऐसा इसलिए है क्योंकि एक उपवर्ग में सुपरक्लास का डेटा और उसका अपना अनूठा डेटा शामिल होता है। इसलिए, मेमोरी को उपवर्ग के लिए पूर्व-आवंटित किया जाता है, जिससे अपकास्टिंग के माध्यम से उपवर्ग-विशिष्ट तरीकों के उपयोग की अनुमति मिलती है।

इंटरफेस के मामले में

इंटरफ़ेस भी प्रकार के रूप में कार्य करते हैं, और ऑब्जेक्ट की मेमोरी में संग्रहीत डेटा को संसाधित करने के लिए फ़िल्टर लेंस के रूप में उनकी भूमिका अवधारणात्मक रूप से कक्षाओं के समान होती है। इंटरफ़ेस के माध्यम से लागू की गई विधियाँ ऑब्जेक्ट के प्रकार से निर्धारित होती हैं, न कि वेरिएबल के प्रकार (डायनामिक बाइंडिंग) से। यह इस विचार को पुष्ट करता है कि चर का प्रकार केवल एक फ़िल्टर के रूप में कार्य करता है, जिससे हमें फ़िल्टर किए गए डेटा का उपयोग करने की अनुमति मिलती है।

निष्कर्ष

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

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/yo-shi/what-is-polymorfism-exploring-type-and-object-relations-nmh?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3