वारसा नेस्टेड क्लासेस - १

"हाय, अमिगो!"

"हाय, किम."

"मला तुम्हाला स्टॅटिक आणि नॉन-स्टॅटिक नेस्टेड क्लास इनहेरिट करण्याबद्दल सांगायचे आहे."

"मी तयार आहे."

"स्टॅटिक नेस्टेड क्लासेसचा वारसा मिळण्यात खरोखर कोणतीही समस्या नाही. ते नेहमीच्या वर्गांप्रमाणेच वारशाने मिळतात:"

उदाहरण
public class Car
{
 public static class Door
 {

 }
}

public class LamborghiniDoor extends Car.Door
{
}

"पण आम्ही स्टॅटिक नेस्टेड क्लासेसना इतर क्लासेसमध्ये स्टॅटिक नेस्टेड क्लासेस इनहेरिट करू शकतो का?"

"का नाही?"

उदाहरण
public class Car
{
 public static class Door
 {

 }
}

public class Lamborghini extends Car
{
 public static class LamborghiniDoor extends Car.Door
 {
 }
}

"ठीक आहे, समजले. त्यांना नेहमीच्या वर्गांप्रमाणेच वारसा मिळाला आहे, बरोबर?"

"होय. पण नॉन-स्टॅटिक नेस्टेड क्लासेस (आतील वर्ग म्हणून ओळखले जातात) सहजतेने वारसा मिळत नाहीत."

"जेव्हा आतील वर्गाचे उदाहरण तयार केले जाते, तेव्हा त्याच्या बाह्य वर्गाचा संदर्भ संग्रहित केला जातो आणि स्पष्टपणे कन्स्ट्रक्टरकडे जातो."

"परिणामी, जेव्हा तुम्ही आतील वर्गाचा वारसा मिळवणाऱ्या वर्गाच्या वस्तू तयार करता, तेव्हा तुम्हाला आवश्यक बाह्य ऑब्जेक्ट स्पष्टपणे पास करणे आवश्यक आहे."

"हे असे दिसते:"

कोड
public class Car
{
 public class Door
 {

 }
}

public class LamborghiniDoor extends Car.Door
{
 LamborghiniDoor(Car car)
 {
  car.super();
 }
}

"तुम्ही एक कार ऑब्जेक्ट डोअर कन्स्ट्रक्टरकडे अस्पष्टपणे पास करणे आवश्यक आहे. हे विशेष रचना वापरून केले जाते: «car.super()»."

"तसे, जर तुम्ही कोणत्याही पॅरामीटर्सशिवाय लॅम्बोर्गिनीडोर कन्स्ट्रक्टर तयार करण्याचा प्रयत्न केला, तर प्रोग्राम संकलित होणार नाही. थोडे विचित्र, हं?"

"हो, काही बारकावे आहेत, पण ते रॉकेट सायन्स नाही."