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

जावा में सार कक्षाएं - इसे तोड़ना

2024-11-08 को प्रकाशित
ब्राउज़ करें:704

Abstract Classes in Java – Breaking It Down

सार वर्ग क्या है?

एक अमूर्त वर्ग अन्य वर्गों के लिए एक ब्लूप्रिंट की तरह है। आप किसी अमूर्त वर्ग से सीधे कोई ऑब्जेक्ट नहीं बना सकते। इसके बजाय, आप इसे अन्य वर्गों के लिए एक आधार के रूप में उपयोग करते हैं जो इस पर निर्माण कर सकते हैं और विवरण भर सकते हैं।

सार कक्षाओं का उपयोग क्यों करें?

सार कक्षाएं तब उपयोगी होती हैं जब आप एक सामान्य अवधारणा को परिभाषित करना चाहते हैं जिसमें कुछ साझा विशेषताएं होती हैं, लेकिन आप विशिष्ट विवरणों के लिए भी जगह छोड़ना चाहते हैं जो विभिन्न स्थितियों में भिन्न हो सकते हैं। उदाहरण के लिए, आपके पास "जानवर" की एक सामान्य अवधारणा हो सकती है जिसमें खाने या सोने जैसी सामान्य विशेषताएं शामिल हैं, लेकिन अलग-अलग जानवर अलग-अलग तरीकों से खा सकते हैं या सो सकते हैं।

एक सार वर्ग बनाना

यहां बताया गया है कि आप एनिमल नामक एक अमूर्त वर्ग कैसे बना सकते हैं:

public abstract class Animal {
    abstract void makeSound();  // Abstract method, no body

    void sleep() {
        System.out.println("This animal sleeps.");
    }
}

इस उदाहरण में, makeSound() एक अमूर्त विधि है, जिसका अर्थ है कि इसमें अभी तक कोई बॉडी नहीं है। हालाँकि, स्लीप() विधि पूरी तरह से लागू है।

एक सार वर्ग का विस्तार

अब, आइए कुछ कक्षाएं बनाएं जो पशु वर्ग का विस्तार करें:

public class Dog extends Animal {
    void makeSound() {
        System.out.println("The dog barks.");
    }
}

public class Cat extends Animal {
    void makeSound() {
        System.out.println("The cat meows.");
    }
}

डॉग और कैट दोनों वर्गों को मेकसाउंड() विधि का अपना संस्करण प्रदान करना होगा, लेकिन उन्हें स्लीप() विधि विरासत में मिली है।

सार वर्ग बनाम इंटरफ़ेस

  • विरासत: एक वर्ग केवल एक अमूर्त वर्ग का विस्तार कर सकता है लेकिन कई इंटरफेस लागू कर सकता है।
  • विधि कार्यान्वयन: एक अमूर्त वर्ग में अमूर्त विधियां (बिना किसी निकाय के) और पूरी तरह से कार्यान्वित विधियां दोनों हो सकती हैं। एक इंटरफ़ेस (जावा 8 से पहले) में केवल अमूर्त विधियाँ हो सकती हैं।
  • कंस्ट्रक्टर: सार वर्गों में कंस्ट्रक्टर हो सकते हैं, जबकि इंटरफेस में नहीं।

आंशिक कार्यान्वयन

एक अमूर्त वर्ग तब बहुत अच्छा होता है जब आपके पास कुछ विधियां होती हैं जिन्हें सभी बाल वर्गों के बीच साझा किया जाना चाहिए, लेकिन आप कुछ तरीकों को उन बाल वर्गों द्वारा परिभाषित करने के लिए बाध्य करना भी चाहते हैं।

public abstract class Bird extends Animal {
    void move() {
        System.out.println("The bird flies.");
    }
}

अब, कोई भी वर्ग जो बर्ड का विस्तार करता है, उसे एनिमल से मूव() विधि और स्लीप() विधि दोनों विरासत में मिलेंगी, लेकिन फिर भी मेकसाउंड() को लागू करने की आवश्यकता है।

चुनौती: इसे स्वयं आज़माएं!

  1. एक अमूर्त विधि स्टार्टइंजिन() के साथ वाहन नामक एक अमूर्त वर्ग बनाएं।
  2. दो वर्ग बनाएं, कार और मोटरसाइकिल, जो वाहन का विस्तार करें और स्टार्टइंजिन() विधि लागू करें।
  3. वाहन में एक सामान्य विधि जोड़ें, जैसे स्टॉपइंजन(), और देखें कि यह बाल कक्षाओं में कैसे काम करता है।

निष्कर्ष

जावा में सार कक्षाएं विशिष्ट विवरणों को परिभाषित करने के लिए उन कक्षाओं के लिए जगह छोड़ते हुए संबंधित कक्षाओं के लिए एक साझा आधार बनाने का एक तरीका प्रदान करती हैं। वे साझा कार्यक्षमता और लचीलेपन के बीच संतुलन बनाते हैं, जिससे आपका कोड शक्तिशाली और पुन: प्रयोज्य दोनों बन जाता है।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/be11amer/abstract-classes-in-java-breaking-it-down-1k79?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3