सी ++ और जावा में, वंशानुक्रम की अवधारणा है। इनहेरिटेंस गुणों का उपयोग कोड का पुन:उपयोग करने और दो वस्तुओं के बीच संबंध बनाने के लिए किया जाता है। यहां हम 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++ में, हमें वर्चुअल कीवर्ड निर्दिष्ट करना होता है।
-
सी ++ में, हम एकाधिक विरासत का उपयोग कर सकते हैं। जावा में, हम सीधे कई इनहेरिटेंस नहीं बना सकते हैं। अस्पष्टता को कम करने के लिए, जावा एकाधिक वंशानुक्रम के प्रभाव को प्राप्त करने के लिए इंटरफेस का समर्थन करता है। इंटरफेस विशुद्ध रूप से सार आधार वर्ग हैं, जहां कोई भी कार्य पूर्ण नहीं है, इसलिए कोई अस्पष्टता नहीं है।