OOPs interview questions in hindi

OOPs के 40 इंटरव्यू प्रश्न और उत्तर | 40 important OOPs interview, viva questions in hindi

पोस्ट को share करें-

OOPs के प्रश्न और उत्तर, OOPs interview questions and answers in hindi, [OOPs mcq, viva questions], BCA के notes, computer notes, OOPs notes, कंप्यूटर notes, OOPs question pdf, OOPs के mcq, OOPs के नए प्रश्न, OOPs for fresher, OOPs for experienced, btech computer notes in hindi.

क्या आप भी OOPs concept में अच्छे बनना चाहते है, और इसके लिए इंटरव्यू की तैयारियों में लगे हुए है? या फिर आप एक student है, जो अपने OOPs के concept को काफी मजबूत करना चाहते है, और इसमें और अच्छा बनना चाहते है?

इन दोनों में से आप भी कोई भी क्यों ना हो,आज आप बिल्कल सही जगह पे आए है, जहाँ हम OOPs से समन्धित कुछ ऐसे topics के बारे में जानने वाले है, जो अमूमन interview या किसी viva में पूछे जाते आए है।

यहां, हर एक interview के साथ ही बड़ी कंपनियों में भी पूछे जाने वाले वास्तविक प्रश्न मिलेंगे, जो आपकी तैयारियों को और भी ज्यादा मजबूत करेंगे। और साथ ही यहाँ हर एक प्रश्न के साथ उसके उत्तर भी दिए गए है, ताकि तैयारी के समय की बचत हो सके।

यह आर्टिकल आपको अपने OOPs concept के कौशल को और ज्यादा साफ़ करने और अपना आत्मविश्वास वापस पाने और किसी नौकरी के लिए तैयार होने में काफी मदद करेगी। साथ ही यह उन छात्रों की भी काफी ज्यादा मदद करेगी जो, इस विषय में अपने ज्ञान को और बढ़ाना चाहते है। 

तो आइये अब हम जानते है,ऐसे ही प्रश्नों के बारे में जो experts और teacher द्वारा इस विषय में काफी ज्यादा पूछे जाते है –

Table of Contents

OOPs से आप क्या समझते हैं? (What is OOPs in hindi)

इसका मतलब “object-oriented programming” होता है। यह एक प्रोग्रामिंग paradigm यानि की प्रतिमान होता है, जो function और procedure के बजाय किसी object के चारों ओर घूमता है। दूसरे शब्दों में कहे तो, यह उन applications को विकसित करने के लिए एक approach होता है, जिनमे objects का काफी उपयोग होता हैं।

एक object एक real word entity होती है, जिसमें डेटा और कोड दोनों ही मौजूद होता है। और यह उस डेटा और कोड को एक साथ binding करके रखने की अनुमति देता है।

OOPs concept को इस्तेमाल करने का उद्देश्य क्या होता है?

OOPs का उद्देश्य प्रोग्रामिंग में real-world की entities, जैसे की – inheritance, hiding, polymorphism, आदि को लागू करना है। OOPs का मुख्य उद्देश्य डेटा और उन पर काम करने वाले functions को एक साथ बांधना है, ताकि कोड का कोई अन्य भाग इस डेटा को उस functions के अलावा access ना कर सके।

OOPs के चार मुख्य features क्या है?

इसके चार मुख्य features है –

  • Inheritance
  • Encapsulation
  • Polymorphism
  • Data Abstraction

OOPs का इस्तेमाल किन कंप्यूटर भाषाओं में किया जाता है?

आज व्यापक रूप से OOPs का इस्तेमाल कई कंप्यूटर भाषाओं में किया जाता है, जिनमे से कुछ प्रमुख भाषाए है – 

JavaPython
C++Go
C#Ruby

OOPs इतना लोकप्रिय क्यों है?

OOPs, प्रोग्रामिंग paradigm को प्रोग्रामिंग की एक बेहतर शैली के रूप में माना जाता है। यह ना केवल एक जटिल कोड को आसानी से लिखने में मदद करता है, बल्कि यह यूजर को उन्हें आसानी से संभालने और बनाए रखने की भी अनुमति देता है। 

इतना ही नहीं, OOPs का मुख्य लाभ – Data Abstraction, Encapsulation, Inheritance, और Polymorphism है, जो किसी प्रोग्रामर के लिए किसी complex scenarios को हल करना आसान बनाता है। और इसीलिए OOPs आज इतने ज्यादा लोकप्रिय हैं।

OOPs के advantages क्या है?

OOPs को इस्तेमाल करने के काफी फायदे होते है, जैसे की –

  • यह एक bottom-up approach का इस्तेमाल करता है।
  • यह हमें कोड की reusability की अनुमति देता है।
  • इसमें abstraction का उपयोग करके यूजर को अनावश्यक डेटा exposure से बचाता है।
  • इसमें आसान redesign और कोड का extension इस्तेमाल होता है, जो अन्य functionality को प्रभावित नहीं करता है।
  • एक complex समस्या को छोटे-छोटे टुकड़ों में तोड़ने में मदद करता है।
  • यह complexity को कम करता है।
  • इसके इस्तेमाल से प्रोग्रामर अपने लक्ष्यों तक तेजी से पहुंचने में सक्षम बनते हैं।   आदि।

OOPs के Disadvantages क्या है?

OOPs को इस्तेमाल करने के काफी नुकसान भी है, जैसे की –

  • इसमें Proper planning की जरुरत पड़ती है।
  • इसमें Program को design करना tricky होता है। 
  • यहाँ प्रोग्रामर को well skilled होना चाहिए।
  • इसमें classes अत्यधिक generalized होती हैं।    आदि। 

OOPs की limitations क्या है?

इसमें intensive टेस्टिंग processes की आवश्यकता होती है।

  • इसमें समस्याओं के समाधान में अधिक समय लगता है।
  • यह छोटी समस्याओं के लिए उपयुक्त नहीं होता है।
  • इसका उपयोग करके बनाए गए programs का आकार procedure-oriented प्रोग्रामिंग approach का उपयोग करके लिखे गए programs से काफी बड़ा हो सकता है।
  • कुछ जगहों में, ये प्रोग्राम बड़ी मात्रा में memory का उपभोग कर सकते हैं।
  • इसमें Procedure Oriented प्रोग्रामिंग की तुलना में समस्याओं को हल करने में अधिक समय लगता है।
  • इस इस्तेमाल करके विकसित किए गए सॉफ़्टवेयर के लिए पर्याप्त मात्रा में pre-work और planning की आवश्यकता होती है।
  • अगर हमारे पास कोई corresponding class मौजूद नही है, तो यहाँ OOPs के कोड को समझना काफी मुश्किल होता है।    आदि। 

object-oriented और structured programming में क्या अंतर है?

Object-oriented ProgrammingStructural Programming
यह bottom-up approach को फॉलो करता है। यह top-down approach को फॉलो करता है। 
यह data hiding तकनीक प्रदान करता है।यह data hiding तकनीक प्रदान नही करता है। 
यह कोड की reusability करने की सुविधा प्रदान करता है, जिस कारण यह redundancy को कम करता है। इसमें हम कोड को दोबारा इस्तेमाल नही कर सकते। 
इसका उपयोग complex समस्याओं को हल करने के लिए किया जाता है। इसका उपयोग moderate समस्याओं को हल करने के लिए किया जाता है।
यह अधिक सुरक्षा प्रदान करता है क्योंकि इसमें data hiding की सुविधा मौजूद होती है। यह कम सुरक्षा प्रदान करता है क्योंकि यह data hiding सुविधा को सपोर्ट नहीं करता है।
यह functions और procedures के बजाय, objects पर आधारित होता है। यह एक प्रोग्राम को एक logical structure प्रदान करता है, जिसमें प्रोग्राम को functions में विभाजित किया जाता है।
इसमें abstraction ज्यादा होने के कारण, इसमें flexibility भी ज्यादा है।इसमें abstraction कम होने के कारण, इसमें flexibility भी कम है।
यह डेटा पर केंद्रित होता है। यह process या logical structure पर केंद्रित होता है।

Pure object-oriented language किसे कहा जाता है?

एक pure object-oriented language वैसी प्रोग्रामिंग भाषा होती है, जो अपने अंदर के सभी चीजों को किसी object के रूप में मानता हो। और pure OOPs भाषा द्वारा primitive types को भी सपोर्ट नही किया जाता है। ऐसे कुछ और अन्य विशेषताएं हैं, जिन्हें एक pure object-oriented भाषा द्वारा पूरा किया जाना चाहिए –

  • Encapsulation
  • Polymorphism
  • Inheritance
  • Abstraction
  • सभी predefined types objects होंगे 
  • सभी user-defined types objects होंगे
  • Objects पर होने वाले सभी तरह के ऑपरेशन केवल objects के संपर्क में आने वाले methods के माध्यम से ही होने चाहिए।

क्या Java एक pure object-oriented भाषा है?

नही, Java एक pure object-oriented भाषा नही है, क्युकी क्योंकि जावा में pre-defined डेटा प्रकारों को objects के रूप में नहीं माना जाता है। 

Class और Object से हम क्या समझते है?

Class – यह किसी object का ब्लूप्रिंट या template होता है। यह एक यूजर द्वारा परिभाषित डेटा प्रकार है। इसके एक class के अंदर, हम variables, constants, member functions, और अन्य functions को परिभाषित करते हैं। यह रन टाइम के समय मेमोरी का उपयोग नहीं करता है। इसमें ध्यान देने की बाट यह है कि, classes को data structure के रूप में नहीं माना जाता है। साथ ही यह एक logical entity होती है। और यह डेटा binding का सबसे अच्छा उदाहरण है।

Object – यह एक real-world entity है, जिसमें behaviour, और properties मौजूद होते हैं। और इसे class के उदाहरण के रूप में जाना जाता है। इसमें member functions, variables मौजूद होते हैं, जिन्हें हमने class में परिभाषित किया हुआ होता है। यह मेमोरी का इस्तेमाल करता है। और विभिन्न objects के अलग-अलग attributes और behaviours होते हैं।

oops class and object example
Fig – class & object illustration

Class और Object में अंतर क्या है?

ClassObject
यह logical entity होती है। यह real-world entity होती है। 
यह conceptual होता है। यह real होता है। 
यह मेमोरी में space occupy नही करता है।यह मेमोरी में space occupy करता है। 
यह एक डेटा प्रकार है जो किसी object के ब्लूप्रिंट को represents करता है। यह class का एक उदाहरण होता है।
यह डेटा और methods को एक साथ एक unit में बांधता है। यह एक class के variable की तरह है।
इसे declare करते समय “class” keyword का इस्तेमाल किया जाता है। इसे declare करते समय “new” keyword का इस्तेमाल किया जाता है। 
इसे एक बार declare किया जाता है। इसमें आवश्यकता पड़ने पर कई objects को declare किया जा सकता है।
एक class बिना किसी object के exist कर सकता है।एक object बिना किसी class के exist नही कर सकता। 

Class और Structure में क्या अंतर है?

ClassStructure
यह सामान्य objects का एक समूह होता है, जो सामान्य properties को शेयर करता है। यह विभिन्न डेटा प्रकारों का एक collection होता है।
यह inheritance को सपोर्ट करता है।यह inheritance को सपोर्ट नही करता है। 
यह reference का एक प्रकार होता है।यह value का एक प्रकार होता है। 
इसके members default रूप से private होते हैं।इसके members default रूप से public होते हैं।
इसको defines करने के लिए “class” keyword का इस्तेमाल किया जाता है।इसको defines करने के लिए “struct” keyword का इस्तेमाल किया जाता है।
“Object” क्लास का एक उदहारण होता है। “structure variable” Structure का एक उदहारण होता है। 
यह data members और member function के साथ डील करता है। यह सिर्फ data members के साथ ही डील करता है। 
इसमें member variables को सीधे initialised नही किया जा सकता। इसमें member variables को सीधे initialised किया जा सकता है। 
जटिल डेटा structure से निपटने के दौरान यह काफी उपयोगी होता है।छोटी डेटा structure से निपटने के दौरान यह उपयोगी है।

Access specifiers क्या होते है, और हमें इनका उपयोग कब करना चाहिए?

OOPs भाषा में, access specifiers कुछ reserved keyword होते हैं, जिनका उपयोग class, method और class के अन्य सदस्यों की accessibility को सेट करने के लिए किया जाता है। 

OOPs में इसे access modifiers के रूप में भी जाना जाता है। और इसमें public, private, और protected जैसे keywords शामिल हैं। साथ ही कुछ अन्य एक्सेस स्पेसिफायर भी है, जो language-specific होते है। जैसे की जावा में इस्तेमाल होने वाला एक और एक्सेस स्पेसिफायर “default” होता है। 

ये एक्सेस स्पेसिफायर OOPs के प्रमुख कार्यों में से एक है, यानी की encapsulation को प्राप्त करने में महत्वपूर्ण भूमिका निभाते हैं। निचे दी गयी तालिका इनकी  accessibility को दर्शाती है –

Specifiers Same क्लास में Derived क्लास में क्लास के बाहर 
Public Yes YesYes 
Private YesNoNo 
Protected Yes YesNo

OOPs में manipulators क्या है, और यह कैसे काम करता है?

OOPs में यह helping functions होते है। इसका उपयोग input या output स्ट्रीम में हेरफेर या संशोधित करने के लिए किया जाता है। और insertion (<<) और extraction (>>) ऑपरेटरों का उपयोग करके यह modification संभव होता है। यहाँ ध्यान देने वाली बात यह है, कि input या output स्ट्रीम के modification का मतलब variables के मूल्यों को बदलना नहीं होता है। यह दो तरह के होते है – एक arguments के साथ और एक बिना किसी arguments के।

OOPs में बिना arguments वाले manipulators के उदहारण है – endl, ws, flush, आदि। वही arguments वाले manipulators के उदहारण है – setw(val), setfill(c), setbase(val), setiosflags(flag), आदि। साथ ही कुछ अन्य manipulators भी होते है, जैसे की – showpos, fixed, scientific, hex, dec, oct, आदि। 

Constructor बनाने के नियम क्या होते हैं?

  • इसमें return type नही हो सकता।
  • इसका नाम class के नाम के समान ही होना चाहिए।
  • इसे abstract नहीं किया जा सकता है।
  • इसे static नही बनाया जा सकता है।
  • इसे overridden नहीं किया जा सकता है।
  • इसे final नहीं बनाया जा सकता है।

Java में constructor और method में क्या-क्या अंतर है?

ConstructorMethod
Constructor का नाम class के नाम के समान ही होता है। Method का नाम class के नाम के समान नही हो सकता है। 
इसका कोई return type मौजूद नहीं होता है। इसमें return type मौजूद होना चाहिए।
यह overridden नही हो सकता है।इसे overridden किया जा सकता है।
इसे static नही declare किया जा सकता है।इसे static declared किया जा सकता है। 
यह class का एक instance बनाता है।इसका इस्तेमाल Java कोड को execute करने के लिए किया जाता है। 
इसे subclass द्वारा inherited नही किया जा सकता है। इसे subclass द्वारा inherited किया जा सकता है। 
जावा compiler automatically रूप से एक default constructor प्रदान करता है। जावा compiler default रूप से कोई method प्रदान नहीं करता है।
जब हम class का object बनाते हैं, तो इसे implicitly रूप से लागू किया जाता है।जब हम इसे explicitly रूप से call करते हैं, तो इसे execute किया जाता है।

Procedural programming और OOPs में क्या अंतर है? 

Procedural Oriented ProgrammingObject-Oriented Programming
यह functions पर आधारित होता है।यह real-world objects पर आधारित होता है।
यह top-down approach को फॉलो करता है।यह bottom-up approach को फ़ॉलो करता है। 
इसमें डेटा पूरे प्रोग्राम के लिए visible होता है।यह डेटा को encapsulate करता है।
इसमें कोड को reuse नही किया जा सकता। इसमें कोड को reuse किया जा सकता है। 
इसमें कोड का modification और extension आसान नहीं होता है।हम इसमें कोड को आसानी से modify और extend कर सकते हैं।
यह कम सुरक्षित होता है, क्योंकि इसमें डेटा hiding का कोई उचित तरीका मौजूद नहीं है।यह अधिक सुरक्षा प्रदान करता है।
इसके उदहारण है – C, VB, FORTRAN, Pascal, आदि। इसके उदहारण है –  C++, Java, C#, .NET, आदि।

Abstract class के characteristics क्या होते है?

यह एक ऐसे class होते है, जिसे abstract घोषित किया जाता है। इसे instantiated नहीं किया जा सकता है, और इसे हमेशा base क्लास के रूप में ही उपयोग किया जाता है। एक abstract क्लास का उद्देश्य base क्लास की एक सामान्य परिभाषा प्रदान करना होता है, जिसे कई derived क्लास शेयर कर सकते हैं। एक abstract क्लास की विशेषताएं हैं –

  • एक abstract क्लास को Instantiation की अनुमति नहीं है, इसे सिर्फ inherited किया जा सकता है।
  • इसे “abstract” keyword का इस्तेमाल करके declare किया जाता है। 
  • यह हमेशा public होता है।
  • एक abstract class में कम से कम एक abstract method का होना जरुरी है। 
  • एक abstract class में abstract और non-abstract दोनों ही प्रकार के methods मौजूद हो सकते है।

Error और Exception में क्या अंतर होता है?

तुलनाExceptionError
Recoverable/ Irrecoverabletry-catch block का इस्तेमाल करके किसी exception से recover किया जा सकता है। किसी error से recover नही किया जा सकता है। 
Occurrenceयह compile time या run time के दौरान हो सकता है। यह run time के दौरान होता है।
Typeइसे दो श्रेणियों,  यानी की “checked” और “unchecked” में रखा जा सकता है।जावा में सारे errors “unchecked” होते है। 
Packageयह java.lang.Exception पैकेज से संबंधित है।यह java.lang.Error पैकेज से संबंधित है।
Known/unknownसिर्फ checked exceptions की जानकारी ही compiler के पास मौजूद होती है  Compiler को errors की जानकारी नहीं होगी।
Causesयह मुख्य रूप से एप्लीकेशन के कारण ही होता है।यह ज्यादातर उस environment के कारण होता है, जिसमें एप्लिकेशन चल रहा होता है।
ExampleChecked – SQLException, IOException
Unchecked – ArrayIndexOutOfBoundException, ArithmeticException, NullPointerException
Java.lang.StackOverFlow, java.lang.OutOfMemoryError

Composition क्या होता है?

यह OOPs के महत्वपूर्ण concepts में से एक है। यह एक ऐसे class का वर्णन करता है, जो अन्य classes की एक या अधिक objects को instance variables में संदर्भित करता है। यह हमें objects के बीच “has-a” एसोसिएशन मॉडल करने की अनुमति भी देता है। composition के मुख्य लाभ हैं –

  • मौजूदा कोड का दोबारा उपयोग करना। 
  • साफ़ APIs डिजाइन।
  • किसी external clients को adapting किए बिना किसी composition में प्रयुक्त क्लास के implementation को बदलना। 

Copy constructor और assignment operator के बिच क्या अंतर होता है?

Copy constructor और assignment ऑपरेटर (=) दोनों का ही उपयोग एक object को दूसरी object का उपयोग करके initialise करने के लिए किया जाता है।

इन दोनों के बीच का मुख्य अंतर यह है, कि Copy constructor दोनों object यानी मौजूदा object और नई बनाई गई object को अलग-अलग मेमोरी allocate करता है, जबकि assignment ऑपरेटर नई बनाई गई object के लिए नई मेमोरी allocate नहीं करता है। 

यह reference variable का उपयोग करता है, जो की पिछले मेमोरी ब्लॉक (जहां एक पुरानी object स्थित है) को point करता है।

Copy Constructor का Syntax 
class_name (const class_name &obj)  
{  
//body  
}
Assignment Operator का Syntax 
class_name obj1, obj2;  
obj1=obj2;  
Copy ConstructorAssignment Operator
यह एक overloaded constructor होता है यह एक operator होता है 
यह किसी मौजूदा object की copy के रूप में एक नई object को बनाता है।यह एक object का मान दूसरी object को assign करता है, जो दोनों पहले से ही मौजूद होते हैं।
यदि किसी class में कोई कॉपी कंस्ट्रक्टर defined नहीं है, तो compiler यहाँ खुद एक प्रदान करता है। यदि असाइनमेंट ऑपरेटर ओवरलोड नहीं है, तो इसकी bitwise कॉपी बनाई जाएगी।
इसमें दोनों object अलग-अलग मेमोरी लोकेशन का उपयोग करते हैं। इसमें दोनों object समान मेमोरी को साझा करते हैं, लेकिन यह दो अलग-अलग reference variables का उपयोग करते हैं, जो एक ही location की ओर point करते हैं।
इसका उपयोग तब किया जाता है, जब किसी मौजूदा object के साथ कोई नया object बनाया जाता है। इसका उपयोग तब किया जाता है, जब हम किसी मौजूदा object को किसी नए object में assign करना चाहते हैं।

Composition और Inheritance में क्या अंतर है?

  • Inheritance का अर्थ होता है, एक object जो की base क्लास के reusable प्रॉपर्टी को प्राप्त कर सके। 
  • Compositions का अर्थ होता है, एक object जो अन्य objects को hold करती है। 
  • Inheritance में, memory (derived object) में केवल एक object होती है, जबकि Compositions में, parent object में सभी composed objects का reference मौजूद होता है।
  • एक डिजाइन perspective से, inheritance objects के बीच “is a” संबंध होता है, जबकि Composition objects के बीच “has a” संबंध होता है।

Inheritance की limitations क्या है?

  • Inheritance का उपयोग करने का मुख्य नुकसान यह है की, इसमें दो classes को tightly coupled किया जाता है। इसका मतलब यह है कि, हम एक class को दूसरे से स्वतंत्र रूप से उपयोग नहीं कर सकते है।
  • यदि Super क्लास में कोई method या aggregate को हटा दिया जाता है, तो हमें Sub Class में उस method का उपयोग करने के लिए उसे refactor करना होगा।
  • Inherit किए गए functions सामान्य functions की तुलना में धीमे काम करते हैं।
  • इसमें सावधानीपूर्वक implementation की आवश्यकता होती है, अन्यथा यह गलत समाधान की ओर बढ़ जाता है।

Inheritance और Polymorphism में क्या अंतर होता है?

InheritancePolymorphism
यह वह होता है, जिसमे एक derived class पहले से मौजूद किसी class की property को  inherit करता है।यह वह है, जिसे हम विभिन्न forms में परिभाषित कर सकते हैं।
इसे classes में लागू किया जाता है।यह functions और methods पर लागू होता है।
Polymorphism को प्राप्त करने के लिए इसकी आवश्यकता होती है।Polymorphism को प्राप्त करने के लिए, इसकी कोई आवश्यकता नहीं होती है।
इसे एक subclass में एक superclass के structure और behavior का उपयोग करने के लिए refers किया जाता है।इसे subclass में एक superclass के behavior को बदलने के लिए refer किया जाता है।
यह single, hybrid, multiple, hierarchical, multipath, और multilevel प्रकारों में हो सकता है।यह दो प्रकार के होते है – compile time और run time polymorphism के रूप में होते है। 
यह कोड reusability का समर्थन करता है, और कोड की lines को कम करता है। यह objects को यह तय करने की अनुमति देता है कि, रन-टाइम (overriding) और कंपाइल-टाइम (overloading) पर किस प्रकार के function को लागू किया जाए।

OOPs में Coupling क्या होता है?

प्रोग्रामिंग में, concerns को अलग करना ही coupling के रूप में जाना जाता है। इसका अर्थ यह है कि कोई object अन्य किसी object की स्थिति या behavior को सीधे modify नहीं कर सकती है। यह परिभाषित करता है कि दो objects एक साथ कितनी closely जुड़ी हुई हैं। Coupling दो प्रकार की होती है –

  • loose coupling.
  • tight coupling.

वे objects जो एक दूसरे से स्वतंत्र होती हैं, और अन्य Objects की स्थिति को सीधे modify नहीं करती हैं, उन्हें loosely coupled कहा जाता हैं। Loose coupling कोड को अधिक लचीला, changeable और काम करने में आसान बनाता है।

वे objects जो अन्य objects पर निर्भर करती हैं, और अन्य objects की states को modify कर सकती हैं, उन्हें tightly coupled कहा हैं। यह ऐसी स्थितियाँ बनाता है, जहाँ एक object के कोड को modify करने के लिए अन्य objects के कोड को बदलने की भी आवश्यकता होती है। Tight coupling में कोड को reuse करना कठिन होता है, क्योंकि हम इसमें कोड को अलग नहीं कर सकते है।

इन्ही कारणों से loose coupling का इस्तेमाल करना हमेशा एक अच्छी आदत होती है।

किन Operators को overload नही किया जा सकता?

  • Scope Resolution Operator (::)
  • Pointer to Member Operator (.*)
  • sizeof operator
  • Ternary Operator (? 🙂
  • Member Access or Dot Operator (.)

New और override में क्या अंतर है?

New modifier कंपाइलर को base क्लास फ़ंक्शन के बजाय नए implementation का उपयोग करने का निर्देश देता है। जबकि, Override modifier बेस क्लास फ़ंक्शन को override करने में मदद करता है।

  • Virtual : यह indicate करता है, कि एक method एक inheritor द्वारा overridden की जा सकती है।
  • Override : अलग-अलग functionality प्रदान करते हुए, base क्लास में virtual method की functionality को Override करता है।
  • New : यह original method को छुपाता है (जिसका virtual होना जरूरी नहीं होता है), और विभिन्न functionality प्रदान करता है। और इसका उपयोग केवल वहीं किया जाना चाहिए, जहां यह अत्यंत आवश्यक हो।

जब हम कोई method को छिपाते हैं, तब भी हम original method को base क्लास में अपग्रेड करके access कर सकते हैं। यह कुछ परिदृश्यों में उपयोगी होता है, लेकिन साथ ही यह dangerous भी है।

Overloading और Overriding क्या होता है?

Overloading – यह OOPs में एक concept होता है, जिसके तहत एक class में दो या दो से अधिक methods एक ही नाम से declare किये जाते है, मगर उनका signature अलग-अलग होता है। और इसे compile-time polymorphism के नाम से भी जाना जाता है। उदाहरण के लिए, निचे दिए गए कोड में, add() एक overloaded method है।

public class Sum  {  
int a, b, c;  
public int add();  
{  
c=a+b;  
return c;  
}  
add(int a, int b);  
{  
//logic  
}  
add(int a, int b, int c);  
{  
//logic  
}  
add(double a, double b, double c);  
{  
//logic  
}  
//statements  
}

Overriding – यदि एक ही method signature वाले method, child और parent क्लास दोनों में ही मौजूद होती है, तो उसे method overriding के रूप में जाना जाता है। इसके लिए  methods में समान संख्या में पैरामीटर और समान प्रकार के पैरामीटर मौजूद होने चाहिए। 

यह parent class method के मान को overrides करता है। साथ ही इसे runtime polymorphism के रूप में भी जाना जाता है। उदाहरण के लिए, निचे दिए गए कोड में bark() एक override method है। 

class Dog  
{  
public void bark()  
{  
System.out.println("woof ");  
}  
}  
class Hound extends Dog  
{  
public void sniff()  
{  
System.out.println("sniff ");  
}  
//overrides the method bark() of the Dog class  
public void bark()  
{  
System.out.println("bowl");  
}  
}  
public class OverridingExample  
{  
public static void main(String args[])  
{  
Dog dog = new Hound();  
//invokes the bark() method of the Hound class  
dog.bark();  
}  
} 

Polymorphism का वास्तविक दुनिया का उदाहरण दें?

Polymorphism का सामान्य अर्थ वह है, जिसके अलग-अलग रूप होते हैं। Polymorphism का सबसे अच्छा वास्तविक दुनिया का उदाहरण एक ऐसा व्यक्ति हो सकता है, जो विभिन्न जगहों और स्थितियों में अलग-अलग भूमिका निभाता है, जैसे की –

  • घर में, एक व्यक्ति पिता, पति और पुत्र की भूमिका निभा सकता है।
  • अस्पताल में वह डॉक्टर या मरीज की भूमिका निभा सकता है।
  • ऑफिस में वही व्यक्ति बॉस या कर्मचारी की भूमिका निभाता है।
  • दुकान पर, वह ग्राहक की भूमिका निभाता है।
  • सार्वजनिक परिवहन में, वह यात्री की भूमिका निभाता है।

इसलिए, एक ही व्यक्ति का अलग-अलग परिस्थितियों में अलग-अलग व्यवहार होता है। और इसे ही Polymorphism कहते हैं।

Data abstraction क्या है, और हम इसे कैसे प्राप्त कर सकते हैं?

यह OOPs  की सबसे महत्वपूर्ण विशेषताओं में से एक है। यह user को केवल आवश्यक डेटा या जानकारी दिखाने की अनुमति देता है, और किसी user से इसके implementation के details को छुपाता है। 

इसका एक real-world उदाहरण है – “कार चलाना”। जब हम कार चलाते हैं, तो हमें यह जानने की जरूरत नहीं होती है, कि इसका इंजन कैसे काम करता है। यहाँ हम केवल यह जानते हैं कि, ECG कैसे काम करता है।

Data abstraction प्राप्त करने के दो तरीके होते हैं –

  • Abstract class
  • Abstract method

Data abstraction के कितने level होते है?

Data abstraction के तीन level होते है –

Physical Level : यह डेटा abstraction का सबसे lowest स्तर होता है। और यह दिखाता है कि डेटा वास्तव में मेमोरी में कैसे stored होता है।

Logical Level : इसमें वह जानकारी शामिल होती है, जो वास्तव में डेटाबेस में tables के रूप में store होती है। साथ ही यह relatively सरल structures में डेटा entities के बीच संबंधों को भी store करता है। और इस स्तर पर, users के लिए view level पर उपलब्ध जानकारी unknown होती है।

View Level : यह डेटा abstraction का उच्चतम स्तर होता है। और इसमें user को वास्तविक डेटाबेस visible होता है। यह एक individual user द्वारा डेटाबेस की उपलब्धता को आसान बनाने के लिए मौजूद होता है।

Data abstraction level hindi
Fig – Levels of data abstraction

OOPs  में variables के कितने प्रकार होते हैं?

OOPs में इसके चार प्रकार होते है –

Instance Variable : यह एक object-level variable होता है। इसे एक class के अंदर declare किया जाना चाहिए, लेकिन इसे एक method, block, और constructor के बाहर होना चाहिए। यह तब बनता है, जब कोई object “new” कीवर्ड का उपयोग करके बनाया जाता है। और इसे class के अंदर variable name को call करके सीधे access किया जा सकता है।

Static Variable : OOPs में यह एक class-level variable होता है। इसे एक class के अंदर कीवर्ड “static” के साथ declare किया जाता है, लेकिन यह किसी method, block, और constructor के बाहर चाहिए। इसे static मेमोरी में स्टोर किया जाता है। और इसकी visibility एक instance variable के समान ही होती है। Static variable का default value भी एक instance variable के समान होता है। और इसे “class_name.variable_name” पर कॉल करके access किया जा सकता है।

Local Variable : यह एक method-level variable होता है। और इसे किसी method, constructor, और block में declare किया जा सकता है। इसमें ध्यान देने की बात यह है की, local variables के साथ access modifier के उपयोग की अनुमति नहीं होती है। यह केवल उस method, block, और constructor को visible होता है, जिसमें इसे declare किया जाता है। Internally, इसे stack level पर लागू किया जाता है। साथ ही इसे उपयोग से पहले declare और initialized किया जाना चाहिए।

Reference Variable : यह एक ऐसा variable होता है, जो class की किसी object की ओर इशारा करता है। यह उस object के स्थान को point करता है जो की मेमोरी में stored हो।

क्या किसी constructor को overload करना संभव होता है?

हां, किसी constructors द्वारा स्वीकार किए गए arguments की संख्या को बदलकर या इसके parameters के डेटा प्रकार को बदलकर constructors को ओवरलोड किया जा सकता है। उदाहरण के लिए –

public class Demo  
{  
Demo()  
{  
//logic  
}  
Demo(String str) //overloaded constructor   
{  
//logic  
}  
Demo(double d) //overloaded constructor  
{  
//logic  
}  
//statements  
}  

क्या Java में main() को overload किया जा सकता है?

हां, हम java में main() method को भी overload कर सकते हैं। एक class में किसी भी संख्या में main() method को declare किया जा सकता है, लेकिन इनमे method signature अलग होना चाहिए। उदहारण के लिए –

class OverloadMain    
{    
public static void main(int a)  //overloaded main method    
{    
System.out.println(a);    
}    
public static void main(String args[])    
{       
System.out.println("main method invoked");    
main(7);    
}    
}

FAQ (Frequently Asked Questions)

क्या किसी class के लिए उसके base class के constructor को inherit करना संभव है?

नही, एक class अपने base क्लास के constructor को कभी inherit नही कर सकता।

Base class और Super class में क्या अंतर होता है?

एक Base क्लास एक root क्लास और सबसे generalized क्लास होता है। वही superclass एक immediate parent class होता है, जिससे दूसरे क्लास कुछ inherit करते है। 

आशा करता हूं कि आज आपलोंगों को कुछ नया सीखने को ज़रूर मिला होगा। अगर आज आपने कुछ नया सीखा तो हमारे बाकी के आर्टिकल्स को भी ज़रूर पढ़ें ताकि आपको ऱोज कुछ न कुछ नया सीखने को मिले, और इस articleको अपने दोस्तों और जान पहचान वालो के साथ ज़रूर share करे जिन्हें इसकी जरूरत हो। धन्यवाद।  

Also read –

Java के 50 इंटरव्यू प्रश्न और उतर

C++ के 35 इंटरव्यू प्रश्न और उत्तर


पोस्ट को share करें-

Similar Posts

2 Comments

  1. Hey there, You have done a great job. I’ll certainly digg it and in my opinion recommend to my friends. I’m sure they’ll be benefited from this web site.

Leave a Reply

Your email address will not be published. Required fields are marked *