IS-A Relationship
IS-A कहने का एक तरीका है - यह ऑब्जेक्ट उस ऑब्जेक्ट का एक प्रकार है। आइए देखें कि extends कीवर्ड का उपयोग इनहेरिटेंस प्राप्त करने के लिए कैसे किया जाता है।
public class Animal { }
public class Mammal extends Animal { }
public class Reptile extends Animal { }
public class Dog extends Mammal { }अब, यदि हम IS-A संबंध पर विचार करते हैं, तो हम कह सकते हैं −
- Mammal IS-A Animal
- Reptile IS-A Animal
- Dog IS-A Mammal
- इसलिए: Dog IS-A Animal भी
extends कीवर्ड के उपयोग से, सबक्लासेस सुपरक्लास की सभी प्रॉपर्टीज को इनहेरिट कर सकेंगे सिवाय सुपरक्लास की प्राइवेट प्रॉपर्टीज के।
हम इंस्टेंस ऑपरेटर के उपयोग से सुनिश्चित कर सकते हैं कि Mammal वास्तव में एक Animal है।
उदाहरण
class Animal { }
class Mammal extends Animal { }
class Reptile extends Animal { }
public class Dog extends Mammal {
public static void main(String args[]) {
Animal a = new Animal();
Mammal m = new Mammal();
Dog d = new Dog();
System.out.println(m instanceof Animal);
System.out.println(d instanceof Mammal);
System.out.println(d instanceof Animal);
}
}यह निम्नलिखित परिणाम उत्पन्न करेगा −
आउटपुट
true true true
HAS-A relationship
ये संबंध मुख्य रूप से उपयोग पर आधारित हैं। यह निर्धारित करता है कि एक निश्चित क्लास HAS-A निश्चित चीज। यह संबंध कोड के डुप्लिकेशन के साथ-साथ बग्स को कम करने में मदद करता है।
आइए एक उदाहरण देखें −
उदाहरण
public class Vehicle{ }
public class Speed{ }
public class Van extends Vehicle {
private Speed sp;
}यह दर्शाता है कि क्लास Van HAS-A Speed। Speed के लिए एक अलग क्लास होने से, हमें Van क्लास के अंदर स्पीड से संबंधित संपूर्ण कोड डालने की आवश्यकता नहीं है, जो Speed क्लास को मल्टीपल एप्लिकेशन में पुनः उपयोग करने योग्य बनाता है।
ऑब्जेक्ट-ओरिएंटेड फीचर में, उपयोगकर्ताओं को यह परेशान होने की आवश्यकता नहीं है कि कौन सा ऑब्जेक्ट वास्तविक कार्य कर रहा है। इसे प्राप्त करने के लिए, Van क्लास Van क्लास के उपयोगकर्ताओं से कार्यान्वयन विवरण छुपाती है। तो, मूल रूप से होता यह है कि उपयोगकर्ता Van क्लास से एक निश्चित क्रिया करने के लिए कहेंगे और Van क्लास या तो स्वयं कार्य करेगी या किसी अन्य क्लास को कार्य करने के लिए कहेगी।