Inheritance in Java: जावा प्रोग्रामिंग में इनहेरिटेंस एक फँडामेन्टल कॉन्सेप्ट है। यह एक subclass को एक superclass के गुणों और मेथड को प्राप्त करने में सक्षम बनाता है। इनहेरिटेंस आपके द्वारा लिखे जाने वाले कोड की मात्रा को कम करके डेवलपमेंट प्रक्रिया को सरल करता है। इस लेख का उद्देश्य जावा में इनहेरिटेंस की गहन समझ प्रदान करना है। हम इनहेरिटेंस की मूल बातें, इनहेरिटेंस का सिंटैक्स, इनहेरिटेंस की प्रकार, इनहेरिटेंस के फायदे और नुकसान, और जावा प्रोग्रामिंग में इनहेरिटेंस का उपयोग करने के लिए सर्वोत्तम प्रथाओं को भी कवर करेंगे।
जावा में इनहेरिटेंस क्या है (What is Inheritance in Java in Hindi) ?
जावा प्राग्रामिंग में, इनहेरिटेंस एक मैकेनिज्म है जो एक नए क्लास (जिसे subclass या child class के रूप में जाना जाता है) को मौजूदा क्लास (जिसे superclass या parent class के रूप में जाना जाता है) पर आधारित होने की अनुमति देता है। child class को parent class के सभी गुण और तरीके इनहेरिटेंस से मिलते हैं और वह अपने खुद के गुण और तरीके भी जोड़ सकता है।
जावा में, क्लास डिक्लेरेशन करने में ’extends’ कीवर्ड का उपयोग करके इनहेरिटेंस लागू किया जाता है। child class parent class का विस्तार करता है और इसके इनहेरिटेंस में मिली प्रॉपर्टीज और मेथड को ओवरराइड या संशोधित कर सकता है। यह कोड को अधिक मॉड्यूलर, आसान और कम त्रुटि-प्रवण बनाता है।
जावा प्रोग्रामिंग में इनहेरिटेंस का क्या महत्व है (Importance of Inheritance in Java programming) ?
इनहेरिटेंस जावा सहित ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में एक फँडामेन्टल कॉन्सेप्ट है। यह एक क्लास को अन्य क्लास से गुण और व्यवहार प्राप्त करने की सुविधा प्रदान करता है, जिसे parent या superclass के रूप में जाना जाता है। child या subclass तब अपने व्यवहार और प्रॉपर्टीज को जोड़ या संशोधित कर सकता है।
जावा प्रोग्रामिंग में इनहेरिटेंस के कुछ प्रमुख लाभ निम्न प्रकार हैंः
- कोड पुनः प्रयोज्यताः इनहेरिटेंस क्लासेस को उनके parent क्लास से कोड का पुनः उपयोग करने, रेडुन्डेन्सी को कम करने और कोड एफिशिएंसी बढ़ाने की सुबिधा प्रधान करता है ।
- प्रतिरूपकताः इनहेरिटेंस parent और child class में कार्यक्षमता को विभाजित करके मॉड्यूलर प्रोग्रामिंग की अनुमति देता है, जिससे कोड को पढ़ना, समझना और बनाए रखना आसान हो जाता है।
- बहुरूपता(Polymorphism): इनहेरिटेंस बहुरूपता की अनुमति देता है, जिसका अर्थ है कि एक subclass का उपयोग उसके parent class के स्थान पर किया जा सकता है, जिससे कोड अधिक फ्लेक्सिबल और अनुकूलनीय हो जाता है।
- एनकैप्सुलेशनः सीधे एक्सेस के बजाय इनहेरिटेंस के जरिए पैरेंट क्लास के तरीकों और प्रॉपर्टीज तक पहुंच की अनुमति देकर इनकैप्सुलेशन को लागू करने में मदद कर सकता है।
जावा में इनहेरिटेंस के कितने प्रकार है (Types of Inheritance in Java) ?
जावा चार प्रकार की इनहेरिटेंस को सपोर्ट करता है, जैसे 1) सिंगल इनहेरिटेंस, 2) मल्टीलेवल इनहेरिटेंस, 3) पदानुक्रमित इनहेरिटेंस और 4) मल्टीपल इनहेरिटेंस। चलिए इसके प्रत्येक प्रकार को विस्तार से जानते हैं :-
Single inheritance
सिंगल इनहेरिटेंस जावा में सबसे अधिक इस्तेमाल किया जाने वाला इनहेरिटेंस है। सिंगल इनहेरिटेंस में, एक subclass सिंगल सुपरक्लास के गुणों और मेथड को प्राप्त करता है। दूसरे शब्दों में, एक subclass एक सुपरक्लास को विस्तार करता है।
Multilevel inheritance
मल्टीलेवल इनहेरिटेंस एक subclassसे एक subclass बनाने की प्रक्रिया है। इस प्रकार की इनहेरिटेंस में, एक subclass दूसरे subclass का विस्तार करता है, जो बदले में एक सुपरक्लास का विस्तार करता है। यह क्लासेस की एक हिरार्चिकाल स्ट्रक्चर बनाता है, जिसमें प्रत्येक subclass अपने parent classes के गुणों और मेथड को प्राप्त करता है।
Hierarchical inheritance
हिरार्चिकाल इनहेरिटेंस एक सिंगल सुपरक्लास से एक से अधिक subclass बनाने की प्रक्रिया है। इस प्रकार की इनहेरिटेंस में, एक superclass को कई subclasses द्वारा विस्तारित किया जाता है। प्रत्येक subclass को सुपरक्लास के गुण और मेथड इनहेरिटेंस में मिलती हैं, और अपने स्वयं के गुण और मेथडस को भी जोड़ सकते हैं।
Multiple inheritance
मल्टीपल इनहेरिटेंस कई सुपरक्लास से एक सबक्लास बनाने की प्रक्रिया है। दूसरे शब्दों में, एक सबक्लास एक से अधिक सुपरक्लास के गुणों और विधियों को प्राप्त कर सकता है। जावा सीधे मल्टीपल इनहेरिटेंस का समर्थन नहीं करता है। हालाँकि, इसे इंटरफेस का उपयोग करके प्राप्त किया जा सकता है।
जावा में इनहेरिटेंस का सिंटेक्स (Syntax of Inheritance in Java)
जावा में, ’extends’ कीवर्ड का उपयोग करके इनहेरिटेंस लागू किया जाता है। सबक्लास ’extends’ कीवर्ड का उपयोग करके सुपरक्लास का विस्तार करता है, जिसके बाद सुपरक्लास का नाम आता है। चलिए इसे एक उदाहरण से समझते हैः
class SuperClass {
// properties and methods of superclass
}
class SubClass extends SuperClass {
// properties and methods of subclass
}
उपरोक्त उदाहरण मे दिखाया है कि कैसे एक subclass ’extends’ कीवर्ड का उपयोग करके एक सुपरक्लास का विस्तार कर सकता है। subclass को superclass के सभी गुण और मेथड विरासत (inherits) से मिलती हैं।
जावा में इनहेरिटेंस कैसे काम करता है (How Inheritance works in Java) ?
हम जावा में इनहेरिटेंस कैसे काम करता है, इसको कुछ उदाहरण से समझते हैं :-
Single Inheritance का एक उदाहरण :
class Animal {
void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Dog is barking");
}
}
public class Main {
public static void main(String[] args) {
Dog d = new Dog();
d.eat();
d.bark();
}
}
उपरोक्त उदाहरण में, ’Animal’ क्लास एक सुपरक्लास है, और ’Dog’ क्लास सबक्लास है। ’Dog’ क्लास ’extends’ कीवर्ड का उपयोग करके ’Animal’ क्लास का विस्तार करता है। सबक्लास ’Dog’ सुपरक्लास ’Animal’ के गुणों और मेथड तक पहुंच सकता है। यहाँ, सबक्लास ’Dog’ अपनी स्वयं की मेथड ’bark’ जोड़ता है।
Multilevel Inheritance का एक उदाहरण :
// Parent class
class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
// Child class inheriting from Animal
class Dog extends Animal {
public void bark() {
System.out.println("Dog is barking");
}
}
// Grandchild class inheriting from Dog
class Labrador extends Dog {
public void color() {
System.out.println("Labrador is black in color");
}
}
// Main class to test the inheritance
public class Main {
public static void main(String[] args) {
Labrador myLabrador = new Labrador();
myLabrador.eat(); // inherited from Animal
myLabrador.bark(); // inherited from Dog
myLabrador.color(); // specific to Labrador
}
}
इस उदाहरण में, हमारे पास ’eat’ की मेथड के साथ मूल वर्ग ’Animal’ है। चाइल्ड क्लास ’Dog’ ’Animal’ से इनहेरिट करता है और अपनी खुद की मेथड ’bark’ जोड़ता है। grandchild class ’Labrador’ ’Dog’ से इनहेरिटेंस में मिला है और अपनी खुद की विधि ’color’ जोड़ता है
’Main’ क्लास में, हम ’Labrador’ का एक ऑब्जेक्ट बनाते हैं और विधियों को ’eat’, ’bark’ और ’color’ कहते हैं। ’eat’ मेथड ’Animal’ से इनहेरिटेंस में मिली है, ’bark’ मेथड ’Dog’ से इनहेरिटेंस में मिली है, और ’color’ मेथड ’Labrador’ के लिए विशिष्ट है।
इस प्रोग्राम का आउटपुट होगाः
Animal is eating
Dog is barking
Labrador is black in color
इससे पता चलता है कि ’Labrador’ को ’eat’ और ’bark’ के मेथड अपने parent class से विरासत (inheritance) में मिले हैं और इसकी अपनी स्पेसिफिक मेथड ’color’ भी है।
Read Also: Rajasthan PTET 2023 Notification Release: How To Apply Online
इनहेरिटेंस के क्या लाभ है (What are the advantages of Inheritance) ?
इनहेरिटेंस जावा प्रोग्रामरों को कई लाभ प्रदान करता है, जो निम्न प्रकार हैंः-
कोड पुनः प्रयोज्यता (Code Reusability)
इनहेरिटेंस कोड पुनः प्रयोज्यता को सक्षम बनाता है। जब एक उपवर्ग एक सुपरक्लास से गुण और मेथड प्राप्त करता है, तो यह अनावश्यक कोड लिखने की आवश्यकता को समाप्त कर देता है। इसके बजाय, सबक्लास सुपरक्लास में मौजूदा कोड का उपयोग कर सकता है। यह प्रोग्रामिंग में समय और प्रयास बचाता है।
कोड पठनीयता में सुधार (Improving Code Readability)
इनहेरिटेंस कोड को अधिक पठनीय बनाता है। जब एक सबक्लास एक सुपरक्लास से गुणों और मेथड को प्राप्त करता है, तो यह कोड की पठनीयता को बढ़ाता है। कोड अधिक व्यवस्थित और समझने में आसान हो जाता है।
कोड दोहराव को कम करना (Reducing Code Duplication)
इनहेरिटेंस कोड दोहराव को कम करता है। जब आप इनहेरिटेंस का उपयोग करते हैं, तो आप सुपरक्लास में कॉमन कोड लिख सकते हैं और इसे सुपरक्लास में इनहेरिट कर सकते हैं। यह विभिन्न क्लासेस में बार-बार एक ही कोड लिखने की आवश्यकता को समाप्त करता है।
इनहेरिटेंस के क्या नुकसान है (What are the disadvantages of Inheritance)?
इनहेरिटेंस हमे कई फायदे प्रदान करता है साथ ही इसके कुछ नुकसान भी हैं, जैसे :-
कसा हुआ संयोजन (Tight Coupling)
इनहेरिटेंस सुपरक्लास और उपवर्ग के बीच तंग युग्मन बनाता है। यदि सुपरक्लास बदलता है, तो यह सबक्लास को प्रभावित कर सकता है, जिससे अप्रत्याशित त्रुटियां हो सकती हैं।
अनम्यता (Inflexibility)
इनहेरिटेंस कोड को अनम्य बना सकता है। एक बार जब आप इनहेरिटेंस हिरार्चि तैयार कर लेते हैं, तो इसे बदलना मुश्किल हो जाता है। सुपरक्लास में किए गए कोई भी बदलाव इससे प्राप्त होने वाले सभी सबक्लास को प्रभावित कर सकते हैं।
जटिलता (Complexity)
इनहेरिटेंस कोड को जटिल बना सकता है। यदि आपके पास गहरी इनहेरिटेंस हिरार्चि है, तो कोड को समझना और बनाए रखना मुश्किल हो सकता है।
Read Also: E Shram Card योजना क्या है पूरी जानकारी
इनहेरिटेंस को उपयोग करने के सर्वोत्तम अभ्यास (Best practices for using Inheritance)
इनहेरिटेंस का प्रभावी ढंग से उपयोग करने के लिए, कुछ सर्वोत्तम अभ्यास का पालन करना आवश्यक है, जो निचे दिए गए हैंः-
इनहेरिटेंस हिरार्चि को सरल रखेंः
इनहेरिटेंस हिरार्चि को यथासंभव सरल रखें। एक गहरी इनहेरिटेंस हिरार्चि कोड को जटिल और बनाए रखने में कठिन बना सकता है। सबक्लासेस की संख्या को तीन या चार तक सीमित करने का प्रयास करें।
उचित होने पर ही इनहेरिटेंस का उपयोग करेंः
उपयुक्त होने पर ही इनहेरिटेंस का उपयोग करें। यदि इनहेरिटेंस आपके कोड में कोई मूल्य नहीं जोड़ती है तो इनहेरिटेंस का उपयोग न करें। यदि यह अधिक उपयुक्त हो तो इनहेरिटेंस के बजाय कम्पोजीशन का उपयोग करें।
डीप इनहेरिटेंस हिरार्चि से बचेंः
गहरी इनहेरिटेंस हिरार्चि से बचें। एक गहरी इनहेरिटेंस हिरार्चि कोड को समझने और बनाए रखने में कठिन बना सकता है। यदि संभव हो, तो क्लासेस का गहरा हिरार्चि बनाने के बजाय कॉमन व्यवहार को परिभाषित करने के लिए इंटरफेस का उपयोग करें।
मल्टीपल इनहेरिटेंस के बजाय इंटरफेस का उपयोग करेंः
जावा सीधे मल्टीपल इनहेरिटेंस का समर्थन नहीं करता है। हालाँकि, आप इंटरफ़ेस का उपयोग करके मल्टीपल इनहेरिटेंस प्राप्त कर सकते हैं। मल्टीपल इनहेरिटेंस से जुड़ी समस्याओं से बचने के लिए मल्टीपल इनहेरिटेंस के बजाय इंटरफेस का इस्तेमाल करें।
निष्कर्ष (Conclusion)
जावा प्रोग्रामिंग में इनहेरिटेंस एक फँडामेन्टल कॉन्सेप्ट है। यह एक उपवर्ग को एक सुपरक्लास के गुणों और विधियों को प्राप्त करने में सक्षम बनाता है, जो विकास प्रक्रिया को सरल करता है। इनहेरिटेंस कई लाभ प्रदान करता है, जैसे कोड पुनः प्रयोज्यता, कोड पठनीयता में सुधार और कोड दोहराव को कम करना। इनहेरिटेंस का प्रभावी ढंग से उपयोग करने के लिए, कुछ सर्वोत्तम प्रथाओं का पालन करना आवश्यक है, जैसे कि इनहेरिटेंस हिरार्चि को सरल रखना, इनहेरिटेंस का उपयोग केवल जब उचित हो, गहन इनहेरिटेंस हिरार्चि से बचना, और मल्टीपल इनहेरिटेंस के बजाय इंटरफेस का उपयोग करना।
अन्य लेख पढ़ें :
- जावा प्रोग्रामिंग में कंस्टक्टर क्या है ?
- What is the Role of PHP in WordPress Theme Development
- Comparison between Java vs JavaScript