जावा सार वर्ग और विधि (उदाहरण के साथ)

इस ट्यूटोरियल में, हम उदाहरणों की मदद से जावा अमूर्त कक्षाओं और विधियों के बारे में जानेंगे। हम जावा में अमूर्तता के बारे में भी जानेंगे।

जावा सार वर्ग

जावा में सार वर्ग को तत्काल नहीं किया जा सकता है (हम सार कक्षाओं की वस्तुओं को नहीं बना सकते हैं)। हम abstractएक अमूर्त वर्ग घोषित करने के लिए कीवर्ड का उपयोग करते हैं । उदाहरण के लिए,

 // create an abstract class abstract class Language ( // fields and methods )… // try to create an object Language // throws an error Language obj = new Language(); 

एक अमूर्त वर्ग में नियमित तरीके और अमूर्त तरीके दोनों हो सकते हैं। उदाहरण के लिए,

 abstract class Language ( // abstract method abstract void method1(); // regular method void method2() ( System.out.println("This is regular method"); ) )

गैर-अमूर्त विधियों के बारे में जानने के लिए, जावा विधियों पर जाएँ। यहाँ, हम सार विधियों के बारे में जानेंगे।

जावा सार विधि

एक विधि जिसमें उसका शरीर नहीं है उसे एक सार पद्धति के रूप में जाना जाता है। abstractअमूर्त तरीकों को बनाने के लिए हम उसी कीवर्ड का उपयोग करते हैं । उदाहरण के लिए,

 abstract void display();

यहाँ, display()एक अमूर्त विधि है। के शरीर display()को बदल दिया जाता है ;

यदि किसी वर्ग में एक सार पद्धति है, तो कक्षा को सार घोषित किया जाना चाहिए। अन्यथा, यह एक त्रुटि उत्पन्न करेगा। उदाहरण के लिए,

 // error // class should be abstract class Language ( // abstract method abstract void method1(); )

उदाहरण: जावा सार वर्ग और विधि

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

 abstract class Language ( // method of abstract class public void display() ( System.out.println("This is Java Programming"); ) ) class Main extends Language ( public static void main(String() args) ( // create an object of Main Main obj = new Main(); // access method of abstract class // using object of Main class obj.display(); ) )

आउटपुट

 यह जावा प्रोग्रामिंग है

उपरोक्त उदाहरण में, हमने एक अमूर्त वर्ग बनाया है जिसका नाम भाषा है। कक्षा में एक नियमित पद्धति होती है display()

हमने मुख्य वर्ग बनाया है जो अमूर्त वर्ग को विरासत में मिला है। कथन पर ध्यान दें,

 obj.display();

यहाँ, obj बाल वर्ग मुख्य का उद्देश्य है। हम ऑब्जेक्ट ओब्ज का उपयोग करके सार वर्ग की विधि को बुला रहे हैं।

अमूर्त विधियों को लागू करना

यदि सार वर्ग में कोई सार पद्धति शामिल है, तो सार सुपरक्लास से विरासत में मिली सभी बाल कक्षाएं सार पद्धति के कार्यान्वयन को प्रदान करना चाहिए। उदाहरण के लिए,

 abstract class Animal ( abstract void makeSound(); public void eat() ( System.out.println("I can eat."); ) ) class Dog extends Animal ( // provide implementation of abstract method public void makeSound() ( System.out.println("Bark bark"); ) ) class Main ( public static void main(String() args) ( // create an object of Dog class Dog d1 = new Dog(); d1.makeSound(); d1.eat(); ) )

आउटपुट

 छाल छाल मैं खा सकता हूं।

उपरोक्त उदाहरण में, हमने एक अमूर्त वर्ग एनिमल बनाया है। कक्षा में एक अमूर्त विधि makeSound()और एक गैर-अमूर्त विधि होती है eat()

हमें सुपरक्लास एनिमल से सबक्लास डॉग विरासत में मिला है। यहाँ, उपवर्ग कुत्ता अमूर्त पद्धति के लिए कार्यान्वयन प्रदान करता है makeSound()

हम तो कुत्ता वर्ग की वस्तु d1 इस्तेमाल किया तरीकों कॉल करने के लिए makeSound()और eat()

नोट : यदि डॉग क्लास अमूर्त पद्धति का कार्यान्वयन प्रदान नहीं करता है makeSound(), तो डॉग को भी सार के रूप में घोषित किया जाना चाहिए। इसका कारण यह है कि उपवर्ग कुत्ता makeSound()पशु से विरासत में मिला है।

एसेसरीज़ कन्स्ट्रक्टर ऑफ़ एब्सट्रैक्ट क्लासेस

एक अमूर्त वर्ग में नियमित वर्ग की तरह निर्माणकर्ता हो सकते हैं। और, हम superकीवर्ड का उपयोग करके उपवर्ग से एक अमूर्त वर्ग के कंस्ट्रक्टर तक पहुंच सकते हैं । उदाहरण के लिए,

 abstract class Animal ( Animal() (… . ) ) class Dog extends Animal ( Dog() ( super();… ) )

यहां, हमने super()डॉग के कंस्ट्रक्टर के अंदर एनिमल के कंस्ट्रक्टर को एक्सेस करने के लिए उपयोग किया है।

ध्यान दें कि superहमेशा उपवर्ग निर्माता का पहला बयान होना चाहिए। अधिक जानने के लिए जावा सुपर कीवर्ड पर जाएँ।

जावा एब्स्ट्रेक्शन

अमूर्त वर्गों और विधियों का प्रमुख उपयोग जावा में अमूर्तता प्राप्त करना है।

अमूर्त वस्तु-उन्मुख प्रोग्रामिंग की एक महत्वपूर्ण अवधारणा है जो हमें अनावश्यक विवरणों को छिपाने और केवल आवश्यक जानकारी दिखाने की अनुमति देती है।

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

अमूर्तता का एक व्यावहारिक उदाहरण मोटरबाइक ब्रेक हो सकता है। हम जानते हैं कि ब्रेक क्या करता है। जब हम ब्रेक लगाते हैं, तो मोटरबाइक बंद हो जाएगी। हालाँकि, ब्रेक का काम हमसे छिपा कर रखा जाता है।

ब्रेक के काम को छिपाने का मुख्य लाभ यह है कि अब निर्माता विभिन्न मोटरबाइक के लिए ब्रेक को अलग-अलग तरीके से लागू कर सकता है, हालांकि, ब्रेक क्या करता है यह एक ही होगा।

आइए एक उदाहरण लेते हैं जो हमें जावा अमूर्तता को बेहतर ढंग से समझने में मदद करता है।

उदाहरण 3: जावा एब्स्ट्रेक्शन

 abstract class Animal ( abstract void makeSound(); ) class Dog extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Bark bark."); ) ) class Cat extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Meows "); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.makeSound(); Cat c1 = new Cat(); c1.makeSound(); ) )

आउटपुट :

 छाल छाल मेवों

In the above example, we have created a superclass Animal. The superclass Animal has an abstract method makeSound().

The makeSound() method cannot be implemented inside Animal. It is because every animal makes different sounds. So, all the subclasses of Animal would have different implementation of makeSound().

So, the implementation of makeSound() in Animal is kept hidden.

Here, Dog makes its own implementation of makeSound() and Cat makes its own implementation of makeSound().

Note: We can also use interfaces to achieve abstraction in Java. To learn more, visit Java Interface.

Key Points to Remember

  • We use the abstract keyword to create abstract classes and methods.
  • An abstract method doesn't have any implementation (method body).
  • सार विधियों वाला एक वर्ग भी सार होना चाहिए।
  • हम एक अमूर्त वर्ग की वस्तुएँ नहीं बना सकते।
  • एक अमूर्त वर्ग की सुविधाओं को लागू करने के लिए, हम इसमें से उपवर्ग प्राप्त करते हैं और उपवर्ग की वस्तुओं का निर्माण करते हैं।
  • एक उपवर्ग को एक सार वर्ग के सभी सार तरीकों को ओवरराइड करना चाहिए। हालांकि, यदि उपवर्ग को सार घोषित किया जाता है, तो सार विधियों को ओवरराइड करना अनिवार्य नहीं है।
  • हम सार वर्ग के संदर्भ का उपयोग करके एक सार वर्ग की स्थिर विशेषताओं और विधियों तक पहुंच सकते हैं। उदाहरण के लिए,
     Animal.staticMethod();

दिलचस्प लेख...