Types of Inheritance in Java

Types of Inheritance in Java: OOP में Inheritance Class के बाद दूसरा सबसे बडा Center Concept है। Inheritance Reusability को सम्भव बनाता है। इसकी वजह से हम एक ही Class को बार-बार अलग-अलग स्थितियों में उपयोग में ले सकते हैं और हमें बार-बार एक ही प्रकार के Code नहीं लिखने पडते हैं।

Reusability

हमेंशा हर Program में कुछ काम ऐसे होते हैं जिन्हें थोडा बहुत परिवर्तन के साथ करना ही पडता है। उदाहरण के लिए आज हम GUI वातावरण के Program लिखते हैं। इन सभी Programs में किसी ना किसी हद तक कुछ Menus, कुछ Standard Tool Buttons, कुछ Window या Forms आदि लगभग सभी Programs में समान होते हैं।

OOPS से पहले हर Program के लिए हर Source File में इनकी Coding को लिखना पडता था जो लगभग सभी Source File में समान होते थे। इसके लिए ज्यादातर बार किसी पिछले Program की Coding को Copy करके नए Program की Source File में Paste किया जाता था। अपनी आवश्‍यकतानुसार Source Coding में परिवर्तन किया जाता था और Program को फिर से Compile करके उपयोग में ले लिया जाता था।

लेकिन अक्सर होता ये था कि जब पुराने Program की Coding को नए Program में Copy किया जाता था तो आवश्‍यकतानुसार विभिन्न परिवर्तन करने पर Program में वापस Bugs आ जाते थे जिन्हें फिर से Debug करना पडता था। कई बार तो Bugs निकालने में इतना समय लग जाता था कि Programmer को लगता था कि यदि उसने पूरी Coding ही फिर से कर ली होती, तो भी उतना समय नहीं लगता जितना पुरानी Coding को Debug करने में लग रहा है। यानी पुरानी Coding को Use करना एक बडी समस्‍या के समान था और Programmers हमेंशा ये चाहते थे कि उन्हें एक ही प्रकार की Coding बार-बार ना करनी पडे।

Program के Bugs को Reduce करने व पुरानी Coding को Use करने के लिए Programmers Functions Create करने लगे। Functions की ये विशेषता होती है कि इन्हें एक ही बार Debug करके कई बार उपयोग में लिया जा सकता है। विभिन्न प्रकार के कामों के लिए विभिन्न प्रकार के Functions लिखे जाते थे और उन्हें एक Bundle के रूप में Reuse करने के लिए Functions की Library बना ली जाती थी। इन्हीं Functions की Library को “C” भाषा में Header Files कहा गया।

हालांकि Function Libraries काफी हद तक Reusable Codes प्रदान करते थे लेकिन इनकी समस्‍या ये थी कि इनके द्वारा Real World Objects को Computer में Logically Represent नहीं किया जा सकता था, क्योंकि Functions Libraries महत्वपूर्ण Data को Include नहीं करते थे। साथ ही एक Function को नए Program में अच्छी तरह से Use करने के लिए उनमें Modifications भी करने पडते थे। चूंकि Functions के रूप में Companies Source Code प्रदान करते थे जिन्हें एक Programmer अपनी आवश्‍यकतानुसार Modify कर सकता था लेकिन जब Programmer उन्हें Modify करता था तो उसे वापस उन Functions के Bugs को Debug करना पडता था।

OOPS के Concept द्वारा एक नया तरीका सामने आया जिससे Reusability काफी सरल हो गई और ये तरीका था Class Libraries का। क्योंकि एक Class Real World Object को अच्छी तरह Modal करता है इसलिए इसे नए वातावरण में उपयोग में लेने के लिए इसमें ज्यादा Modification करने की आवश्‍यकता नहीं होती है।

OOPS हमें एक ऐसा तरीका प्रदान करता है जिससे बिना Class के Coding को परिवर्तित किए हुए Class को Modify किया जा सकता है और फिर से उपयोग में लाया जा सकता है। ये विशेषता OOPS में Inheritance Concept के कारण हमें प्राप्त होती है। इस Concept में किसी पुरानी Class (Super Class) कहते हैं, उसे Modify नहीं करना होता है बल्कि एक नई Class (Sub Class) बनायी जाती है और उसमें पुरानी Class के सभी Features को Derive कर लिया जाता है साथ ही अपनी आवश्‍यकतानुसार नए Features को भी इस नई Class में Add कर लिया जाता है। इस प्रक्रिया को OOPS में Inheritance कहते हैं।

Inheritance and Program Design

पुराने Codes को Modify करके Use करने में सरलता प्रदान करना Inheritance की एक और विशेषता है। Inheritance हमें एक Program के Components को दूसरे Program से Relate करने या नए Program में  जोडने का एक नया तरीका प्रदान करता है। ये नए प्रकार की Relationship Program को Design करने के लिए Extra Flexibility प्रदान करता है और Programmer को ये सुविधा प्रदान करता है कि वह Program Architecture को इस प्रकार से Design कर सके कि Program ज्यादा से ज्यादा Accurate तरीके से Real World Relationship को Reflect करे।

Inheritance के Concept के आधार पर हम एक Class से कई अन्‍य Classes का Relation बना कर कई अन्‍य नई Classes बना सकते हैं, जिन्हे Sub Class कहा जाता है।

Inheritance को कई बार “Kind of” Relationship द्वारा Represent किया जाता है। इस Relationship का मतलब समझने से पहले हम एक अन्‍य Relationship को समझेंगे जिसे “Has a” Relationship या Composition कहा जाता है।

  

Composition: A “Has a” Relationship

हमने पहले भी Composition को अपने Program में कई बार Use किया है। हम जितनी भी बार किसी Class में एक Instance Data Member Place करते हैं, हम एक “Has a” Relationship बना रहे होते हैं। जैसे यदि एक Employee Class है और उसमें name नाम का एक Data Item है, तो हम ये कह सकते हैं किस Employee का एक नाम है या यदि English Language में कहें तो कह सकते हैं कि:

Employee “Has a” Name

इसी तरह से एक Employee Object का ID हो सकता है, Salary हो सकता है, आदि। यदि हम Relationship के आधार पर इन्हें भी Describe करना चाहें तो कह सकते हैं कि%

Employee “Has a” ID
Employee “Has a” Salary

Object व उसके Features के बीच इस प्रकार के Relationship को Composition कहा जाता है क्योंकि एक Employee Object इन Features को Represent करने वाले Variables का एक Composition है।

इसी तरह से Stack Class में Stack के Data को Hold करने के लिए एक Array को और Index Number को Store करने के लिए एक top Variable, Member Data के रूप में हो सकते हैं। इस Stack Class के बारे में यदि हम कहना चाहें तो कह सकते हैं कि एक Stack Object एक Array और एक Stack-Top Index का Composition है या कह सकते हैं कि एक Stack में एक Array है और एक top Index Variable है। यानी

Stack “Has a” StackArray
Stack “Has a” topIndex

हम किसी Class में किसी दूसरी Class के Object को भी एक Member Data Variable के रूप में Declare कर सकते हैं। यानी यदि हम चाहें तो किसी School Class में किसी Student Class के Object को भी Data Member के रूप में Declare कर सकते हैं।

इसी तरह से हम एक Bicycle Class में Frame Object को Data Member के रूप में रख सकते हैं जो कि किसी अन्‍य Class का एक Object है। OOPS में Composition किसी Real World Object को इस तरह से Represent करता है, जिसमें एक Object कई अन्‍य Objects का बना हुआ हो सकता है। यदि हम एक Family Relationship के आधार पर “Has A” Relationship को Represent करें तो हम निम्नानुसार चित्र द्वारा इस Relationship को समझ सकते हैं:

Has – A / Part – Of Relationship

एक Human Being Class के पास एक Heart है और एक Heart Human Being Class का एक भाग है।

Types of Inheritance in Java

Has a” Relationship व “Part of” Relationship आपस में Interchangeable होते हैं। “C” Language में इस “Has a” Relationship को Structure द्वारा Represent किया जाता था। यानी एक Structure कई अन्‍य Variables व Structures से Composed होता था। लेकिन एक और Relationship होती है जिसे “C” Language जैसी Procedural Languages Modal नहीं कर सकते हैं। इस Relationship को “Kind of” Relationship कहा जाता है।

Inheritance: A “Kind of” Relationship

OOPS Real World के उस Concept को Represent करता है, जिसे Generalization कहा जाता है। यानी यदि एक Maruti Car है, एक Tata Sumo Car है और एक Ferrari Car है, तो हम कह सकते हैं। ये तीनों कारें एक General Concept जिसे Car कहते हैं, के Specific उदाहरण हैं। इन सभी कारों में Wheels होते हैं, लेकिन हो सकता है कि Maruti Car के Wheels की चौडाई कम हो और Ferrari Car के Wheels की चौडाई अधिक हो।

इसी तरह से हो सकता है कि Tata Sumo Car के Steering का व्यास अन्‍य कारों की तुलना में अधिक हो। यानी तीनों Cars की General Specification के मान में अन्तर हो सकता है, जबकि तीनों Cars के Attributes समान Features को Share करते हैं।

लेकिन फिर भी हम ये कह सकते हैं कि Maruti एक प्रकार की Car है। इसी तरह से Tata Sumo भी एक प्रकार की Car है और Ferrari भी एक प्रकार की Car है। यदि हम इसे English Language में कहें तो कह सकते हैं कि:

Maruti is a “Kind of” Car
Ferrari is a “Kind of” Car
Tata Sumo is a “Kind of” Car

इसी तरह से माना हम एक Employee Class बनाते हैं। लेकिन Employee भी कई प्रकार के हो सकते हैं। जैसे Labor, Manager, Scientist आदि। ये सभी किसी Company के Employee हो सकते हैं, लेकिन ये सभी अलग-अलग प्रकार के (Kind of) Employee हैं। फिर भी हर Employee का Employee Class से एक सम्बंध है, जो इनके अलग-अलग प्रकार के Employee होने को Represent है। ये दोनों उदाहरण Cars व Employees की General Category को Represent करते हैं।

हम हमारे दैनिक जीवन में भी Generalization को काफी Use करते हैं। हम जानते हैं कि घोडा, गाय, आदमी, औरत आदि सभी सजीव प्रकार के उदाहरण हैं। इसी तरह से Car, Bus, Truck आदि Vehicle प्रकार के उदाहरण हैं। Macintosh, व PCs Computer प्रकार के उदाहरण हैं। इन सभी Relationships को यदि हम English भाषा में Represent करें तो कह सकते हैं कि:

Human Being is “a Kind” of Mammal
Dog is “a Kind” of Mammal
Horse is “a Kind” of Mammal
Maruti is “a Kind” of Car
Ferrari is “a Kind” of Car
Tata Indica is “a Kind” of Car 

यानी हम कह सकते हैं कि Real World में हर Object का उसकी Class से एक प्रकार का “Kind of” सम्बंध होता है इसी तरह से हर Object Attributes या Features का एक Composition होता है। जब Real World में Physically विभिन्न प्रकार के Objects के बीच इस प्रकार का सम्बंध होता है, तो Logically यही सम्बंध हमें Computer में भी Establish करना जरूरी है तभी हम किसी Computer Language को Object Oriented Language कह सकते हैं। Inheritance Objects की Classes के बीच इसी Relationship को Establish करने की क्षमता प्रदान करता है।

Kind Of Relationship

इन्सान व जानवर दोनों ही सजीव प्राणी हैं। दोनों के ही ज्यादातर Characteristics एक समान होते हैं। जैसे दोनों के पास दो आंखें, एक नाक, एक मुंह, दो कान होते हैं और दोनों ही चल सकते हैं, भाग सकते हैं, शिकार कर सकते हैं, आदि। इसलिए हम ये कह सकते हैं कि इन्सान एक प्रकार का सजीव है और कोई जानवर जैसे कि शेर भी एक प्रकार का सजीव है। इसे हम निम्नानुसार चित्र द्वारा भी दर्शा सकते हैं:

Types of Inheritance in Java - Kind of Relationship

इसे अंग्रेजी भाषा में Describe करें तो हम कह सकते हैं कि:

  Human Being is a Kind of Mammal.

इसी तरह से हम एक शेर को भी निम्नानुसार Represent कर सकते हैं:

Types of Inheritance in Java - Kind of Relationship Example

Is – A Relationship

पिछले उदाहरण में हमने देखा कि इन्सान व शेर सजीव Class के दो उदाहरण हैं। अब हम एक Human Being Class के Instance जिसका नाम Rahul Sharma है, को दखते हैं, जो कि:

   एक Human Being है और एक प्रकार का सजीव है। यानी:

Types of Inheritance in Java - Is a - Kind of Relationship

Computer में किसी Logical Class को किसी दूसरी Logical Class से Logically Relate कर सकते हैं और विभिन्न प्रकार की Relationship को प्रयोग करते हुए हम किसी Class को बिना Rewrite किए हुए, फिर से Reuse कर सकते हैं।

एक उदाहरण द्वारा समझें तो एक बच्चे में उसके माता व पिता दोनों के गुण आते हैं, जिन्हें आनुवांशिक गुण कहते हैं। इसी आनुवांशिकता के सिद्धांत का प्रयोग Object Oriented Concept के रूप में Computer में किया जाता है। आनुवांशिकता के इस गुण को OOPS में Inheritance कहा जाता है।

Inheritance एक ऐसा तरीका होता है, जिसमें यदि दो समान प्रकार के Objects हों, तो एक Object दूसरे Object के Attributers (State) व Behaviors (Ability) को Use कर सकता है। इस सिद्धांत के आधार पर ही Object Oriented Programming Languages में Reusability का विकास किया गया है।

GUI Application in Java
Generalization and Specialization

Java Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Java Programming Language in Hindi | Page: 682 | Format: PDF

BUY NOW GET DEMO REVIEWS