உள்ளமை வகுப்புகளைப் பெறுதல் - 1

"வணக்கம், அமிகோ!"

"வணக்கம், கிம்."

"நிலையான மற்றும் நிலையான அல்லாத உள்ளமை வகுப்புகளைப் பெறுவதைப் பற்றி நான் உங்களுக்குச் சொல்ல விரும்புகிறேன்."

"நான் தயார்."

"நிலையான உள்ளமை வகுப்புகளைப் பெறுவதில் உண்மையில் எந்தச் சிக்கல்களும் இல்லை. வழக்கமான வகுப்புகளைப் போலவே அவை மரபுரிமையாகப் பெறப்படுகின்றன:"

உதாரணமாக
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()»."

"அப்படியானால், நீங்கள் லம்போர்கினி டோர் கன்ஸ்ட்ரக்டரை எந்த அளவுருவும் இல்லாமல் உருவாக்க முயற்சித்தால், நிரல் வெறுமனே தொகுக்காது. கொஞ்சம் விசித்திரமாக இருக்கிறது, இல்லையா?"

"ஆமாம், இரண்டு நுணுக்கங்கள் உள்ளன, ஆனால் அது ராக்கெட் அறிவியல் அல்ல."