Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ बनाम जावा में विरासत

सी ++ और जावा में, वंशानुक्रम की अवधारणा है। इनहेरिटेंस गुणों का उपयोग कोड का पुन:उपयोग करने और दो वस्तुओं के बीच संबंध बनाने के लिए किया जाता है। यहां हम C++ में इनहेरिटेंस और Java में इनहेरिटेंस के बीच कुछ बुनियादी अंतर देखेंगे।

  • जावा में, सभी वर्ग ऑब्जेक्ट क्लास का विस्तार कर रहे हैं। तो कक्षाओं का हमेशा एक स्तर का वंशानुक्रम वृक्ष होता है। ऑब्जेक्ट क्लास पेड़ की जड़ में मौजूद है। आइए हम एक साधारण कोड का उपयोग करके जांच करें कि यह सच है या नहीं।

उदाहरण

//This is present in the different file named MyClass.java
public class MyClass {
   MyClass() {
      System.out.println("This is constructor of MyClass.");
   }
}
//This is present the different file named Test.Java
public class Test {
   public static void main(String[] args) {
      MyClass obj = new MyClass();
      System.out.println("obj is an instance of Object: " + (obj instanceof Object));
   }
}

आउटपुट

This is constructor of MyClass.
obj is an instance of Object: true
  • जावा में, दादा-दादी वर्ग के सदस्यों को सीधे बॉट तक पहुँचा जा सकता है।

  • सी ++ की तुलना में जावा में संरक्षित दृश्यता थोड़ी अलग है। जावा में बेस क्लास के संरक्षित सदस्यों को उसी पैकेज के दूसरे वर्ग से एक्सेस किया जा सकता है, भले ही वह क्लास बेस क्लास से व्युत्पन्न न हो। यहां MyClass के संरक्षित सदस्य को टेस्ट से एक्सेस किया जा सकता है।

उदाहरण

//This is present in the different file named MyClass.java
public class MyClass {
   protected int x = 10;
   protected int y = 20;
}
//This is present the different file named Test.Java
public class Test {
   public static void main(String[] args) {
      MyClass obj = new MyClass();
      System.out.println("x is: " + obj.x + " y is: " + obj.y);
   }
}

आउटपुट

x is: 10 y is: 20
  • जावा में, हम विरासत के लिए विस्तारित कीवर्ड का उपयोग करने के लिए जावा करते हैं। सी ++ में, हम सार्वजनिक, संरक्षित और निजी जैसे विरासत की दृश्यता निर्धारित कर सकते हैं, लेकिन यहां हम दृश्यता नहीं बदल सकते हैं। तो अगर कुछ सदस्य सार्वजनिक हैं या बेस क्लास में संरक्षित हैं, तो वे व्युत्पन्न वर्ग में भी सार्वजनिक या संरक्षित होंगे।

  • जावा में सभी विधियाँ डिफ़ॉल्ट रूप से आभासी होती हैं। C++ में, हमें वर्चुअल कीवर्ड निर्दिष्ट करना होता है।

  • सी ++ में, हम एकाधिक विरासत का उपयोग कर सकते हैं। जावा में, हम सीधे कई इनहेरिटेंस नहीं बना सकते हैं। अस्पष्टता को कम करने के लिए, जावा एकाधिक वंशानुक्रम के प्रभाव को प्राप्त करने के लिए इंटरफेस का समर्थन करता है। इंटरफेस विशुद्ध रूप से सार आधार वर्ग हैं, जहां कोई भी कार्य पूर्ण नहीं है, इसलिए कोई अस्पष्टता नहीं है।


  1. C++ में एकाधिक वंशानुक्रम

    एकाधिक वंशानुक्रम तब होता है जब एक वर्ग एक से अधिक आधार वर्ग से विरासत में मिलता है। तो वर्ग एकाधिक वंशानुक्रम का उपयोग करके कई आधार वर्गों से सुविधाओं को प्राप्त कर सकता है। यह ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज जैसे C++ की एक महत्वपूर्ण विशेषता है। एक आरेख जो एकाधिक वंशानुक्रम प्रदर्शित करता

  1. जावा में सिंगल लेवल इनहेरिटेंस

    सिंगल लेवल इनहेरिटेंस - एक क्लास को सिंगल क्लास से गुण विरासत में मिलते हैं। उदाहरण के लिए, क्लास बी को क्लास ए विरासत में मिली है। उदाहरण class Shape {    public void display() {       System.out.println("Inside display");    } } class Rectangle extends

  1. जावा में विरासत के प्रकार

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